当前位置: 首页 > wzjs >正文

网站开发公司哪家靠谱活动推广方案策划

网站开发公司哪家靠谱,活动推广方案策划,电子书新手学做网站,爱站攻略Unity AssetBundles资源加载管理器 实现了AB包管理器 目的: 让外部更方便地进行资源加载(同步加载/异步加载) 技术包含: AB包相关API单例模式委托(Lambda)表达式协程字典 AssetBundles工具下载地址 using System.Collections; using System.Collections.Generic;…

Unity AssetBundles资源加载管理器

实现了AB包管理器
目的: 让外部更方便地进行资源加载(同步加载/异步加载)

技术包含:

  1. AB包相关API
  2. 单例模式
  3. 委托(Lambda)表达式
  4. 协程
  5. 字典

AssetBundles工具下载地址

using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.Events;/// <summary>
/// AB 包管理器
/// 目的: 让外部更方便地进行资源加载
/// 包含
/// 1. AB包相关API
/// 2. 单例模式
/// 3. 委托(Lambda)表达式
/// 4. 协程
/// 5. 字典
/// </summary>
public class ABMgr : SingletonAutoMono<ABMgr>
{//主包private AssetBundle mainAB = null;//依赖包获取的配置文件private AssetBundleManifest manifest= null;//字典  用字典来存储 加载过的AB包private Dictionary<string, AssetBundle> abDic = new Dictionary<string, AssetBundle>();//AB包存放路径private string PathUrl{get{return Application.streamingAssetsPath+"/";}}//主包名private string MainABName{get{#if UNITY_IOSreturn "IOS";#elif UNITY_ANDROIDreturn "Android";#elsereturn "PC";#endif}}/// <summary>/// 加载ab包/// </summary>/// <param name="abname"></param>private void LoadAB(string abname){//加载AB包if (mainAB == null){mainAB = AssetBundle.LoadFromFile(PathUrl + MainABName);manifest = mainAB.LoadAsset<AssetBundleManifest>("AssetBundleManifest");}//获取abname包的依赖信息,根据依赖信息添加依赖包AssetBundle ab = null;string[] strs = manifest.GetAllDependencies(abname);for (int i = 0; i < strs.Length; i++){//判断包是否加载过了if (!abDic.ContainsKey(strs[i])){ab = AssetBundle.LoadFromFile(PathUrl + strs[i]);abDic.Add(strs[i], ab);}}//加载资源来源包,如果没有加载过再加载if (!abDic.ContainsKey(abname)){ab = AssetBundle.LoadFromFile(PathUrl + abname);abDic.Add(abname, ab);}}//同步加载 根据名字public Object LoadRes(string abname,string resname){//加载ab包LoadAB(abname);//加载资源//为了方便外面加载 判断资源是否为GameObect//如果是 直接实例化 再返回给外部Object obj = abDic[abname].LoadAsset(resname);if (obj is GameObject){return Instantiate(obj);}else return obj;}//同步加载 根据typepublic Object LoadRes(string abname, string resname,System.Type type){//加载ab包LoadAB(abname);//加载资源//为了方便外面加载 判断资源是否为GameObect//如果是 直接实例化 再返回给外部Object obj = abDic[abname].LoadAsset(resname,type);if (obj is GameObject){return Instantiate(obj);}else return obj;}//同步加载 泛型public T LoadRes<T>(string abname, string resname) where T: Object{//加载ab包LoadAB(abname);//加载资源//为了方便外面加载 判断资源是否为GameObect//如果是 直接实例化 再返回给外部T obj = abDic[abname].LoadAsset<T>(resname);if (obj is GameObject){return Instantiate(obj);}else return obj;}/// <summary>/// 异步加载(Async) 根据名字/// 加载AB包没有使用异步/// 而是加载AB包中的asset资源的时候使用异步/// </summary>/// <param name="abname"></param>public void LoadResAsync(string abname, string resname,UnityAction<Object> callBack){StartCoroutine(ReallyLoadAsync(abname,resname,callBack));}private IEnumerator ReallyLoadAsync(string abname,string resname,UnityAction<Object> callBack){//加载AB包LoadAB(abname);//创建请求 从AB包加载资源AssetBundleRequest abr = abDic[abname].LoadAssetAsync(resname);//等待abr加载结束yield return abr;//abr.asset 为加载的资源if(abr.asset is GameObject){//abr如果是GameObject 实例化callBack(Instantiate(abr.asset));}else{callBack(abr.asset);}}/// <summary>/// 异步加载(Async) 根据type/// </summary>/// <param name="abname"></param>public void LoadResAsync(string abname, string resname,System.Type type, UnityAction<Object> callBack){StartCoroutine(ReallyLoadAsync(abname, resname,type, callBack));}private IEnumerator ReallyLoadAsync(string abname, string resname, System.Type type,UnityAction<Object> callBack){//加载AB包LoadAB(abname);//创建请求 从AB包加载资源AssetBundleRequest abr = abDic[abname].LoadAssetAsync(resname,type);//等待abr加载结束yield return abr;//abr.asset 为加载的资源if (abr.asset is GameObject){//abr如果是GameObject 实例化callBack(Instantiate(abr.asset));}else{callBack(abr.asset);}}/// <summary>/// 异步加载(Async) 泛型/// </summary>/// <param name="abname"></param>public void LoadResAsync<T>(string abname, string resname, UnityAction<T> callBack) where T : Object {// public delegate void UnityAction<T0>(T0 arg0);//其中UnityAciton是有着一个参数(T0)的委托StartCoroutine(ReallyLoadAsync<T>(abname, resname, callBack));}private IEnumerator ReallyLoadAsync<T>(string abname, string resname, UnityAction<T> callBack) where T: Object {//加载AB包LoadAB(abname);//创建请求 从AB包加载资源AssetBundleRequest abr = abDic[abname].LoadAssetAsync<T>(resname);//等待abr加载结束yield return abr;//abr.asset 为加载的资源if (abr.asset is GameObject){//abr如果是GameObject 实例化//最后回调函数(函数指针,函数作为参数)调用委托callBack(Instantiate(abr.asset) as T);}else{callBack(abr.asset as T);}}//单个包卸载public void Unload(string abname){if (abDic.ContainsKey(abname)){abDic[abname].Unload(false);abDic.Remove(abname);}}//所有包卸载public void ClearAB(){//卸载所有AssetBundles(UnloadAll)AssetBundle.UnloadAllAssetBundles(false);//清空字典abDic.Clear();//主包和配置文件置空mainAB = null;manifest = null;}}
http://www.dtcms.com/wzjs/273462.html

相关文章:

  • 做英文网站的心得百度浏览官网
  • 西安建设网站排名市场调研报告总结
  • 杭州网络网站建设wordpress外贸独立站
  • 宁波seo建站价格关键词优化怎么优化
  • 如何将自己做的网站策划推广方案
  • 具有价值的网站制作常见的微信营销方式有哪些
  • 怎么建立自己企业网站百度快速收录开通
  • 网站w3c标准怎样创建网站或者网址
  • 外贸网站建设评价seo服务工程
  • 百度小程序给网站做链接百度指数的网址是什么
  • 网站域名地址是什么企业网站优化工具
  • 中国建设银行北海招聘信息网站百度站长工具app
  • 哪个cms可以做交友网站网页制作接单平台
  • 网站开发公司需要哪些部门新媒体销售好做吗
  • 平阳县建设局网站百度pc端网页版
  • 龙湾做网站网络营销软文
  • 蓟县网站制作免费网站优化排名
  • 做民宿上几家网站好湖南正规关键词优化
  • wordpress文章引入代码天津seo外包
  • 做网站只做前端可以用吗腾讯效果推广
  • 做网站py和php列表网推广效果怎么样
  • 包头网站建设推广nba湖人队最新消息
  • 有哪些做的推文排版的网站关键字挖掘
  • 可以免费做网站吗百度seo怎么样优化
  • 动态网站开发大赛名字阿里指数查询
  • 网站文案设计百度电脑版下载安装
  • 网站开发asp最有效的15个营销方法
  • 怎么切图做网站网络营销推广的方法
  • 深圳西乡 网站建设sem培训班
  • 平台网站怎么做的好2022网站seo