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

怎么做代刷网网站app品牌推广官

怎么做代刷网网站app,品牌推广官,推荐医疗网站建设,社区做图网站有哪些1、什么是引用计数规则#xff1f; 当通过加载使用可寻址资源时#xff0c;Addressables会在内部帮助我们进行引用计数#xff0c;使用资源时#xff0c;引用计数1#xff0c;释放资源时#xff0c;引用计数-1#xff0c;当可寻址资源的引用为0时#xff0c;就可以卸载…1、什么是引用计数规则 当通过加载使用可寻址资源时Addressables会在内部帮助我们进行引用计数使用资源时引用计数1释放资源时引用计数-1当可寻址资源的引用为0时就可以卸载它了 为了避免内存泄露不需要使用的内容残留在内存中我们要保证加载资源和卸载资源是配对使用的 注意释放的资源不一定立即从内存中卸载在卸载资源所属的AB包之前不会释放资源使用的内存(比如自己所在的AB包 被别人使用时这时AB包不会被卸载所以自己还在内存中)我们可以使用Resources.UnloadUnusedAssets卸载资源建议在切换场景时调用 AB包也有自己的引用计数Addressables把它也视为可寻址资源从AB包中加载资源时引用计数1从AB包中卸载资源时引用计数-1当AB包引用计数为0时意味着不再使用了这时会从内存中卸载 总结Addressables内部会通过引用计数帮助我们管理内存我们只需要保证 加载和卸载资源配对使用即可 2、AddressableMgr  using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using NUnit.Framework; using Unity.VisualScripting; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.ResourceManagement.AsyncOperations;public class AddresssablesInfo {public AsyncOperationHandle handle;public uint count;public AddresssablesInfo(AsyncOperationHandle handle){this.handle handle;count 1;} }public class AddressableMgr {public static AddressableMgr instance new AddressableMgr();public static AddressableMgr Instance instance;// 有一个容帮助存储异步加载的返回值public Dictionarystring, AddresssablesInfo resDic new Dictionarystring, AddresssablesInfo();private AddressableMgr() { }public void LoadAssetAsyncT(string name, ActionAsyncOperationHandleT callback){// 由于存在同名不同类型资源区分加载所以通过名字和类型进行拼接作为 Keystring keyName name _ typeof(T).Name;AsyncOperationHandleT handle;// 已经加载过该资源if (resDic.ContainsKey(keyName)){// 获取异步加载返回的 handlehandle resDic[keyName].handle.ConvertT();resDic[keyName].count 1;if (handle.IsDone){callback(handle);}// 还没有加载完成else {// 如果还没有异步加载完成只需要添加委托告诉完成后做什么handle.Completed (obj) {if (obj.Status AsyncOperationStatus.Succeeded)callback(obj);};}return;}// 如果没有加载过该资源直接进行异步加载并记录handle Addressables.LoadAssetAsyncT(name);handle.Completed (obj) {if (obj.Status AsyncOperationStatus.Succeeded)callback(obj);else{Debug.LogWarning(keyName load asset failed);if (resDic.ContainsKey(keyName))resDic.Remove(keyName);}};AddresssablesInfo info new AddresssablesInfo(handle);resDic.Add(keyName, info);}public void ReleaseT(string name){string keyName name _ typeof(T).Name;if (resDic.ContainsKey(keyName)){resDic[keyName].count - 1;if (resDic[keyName].count 0){AsyncOperationHandleT handle resDic[keyName].handle.ConvertT();Addressables.Release(handle);resDic.Remove(keyName);}}}// 异步加载多个资源 或者 加载指定资源private string FormatKeyNameT(Liststring keys){string keyName ;foreach (string key in keys)keyName key _;keyName typeof(T).Name;return keyName;}public void LoadAssetAsyncT(Addressables.MergeMode mode, ActionT callBack, params string[] keys){// 1.构建一个 keyName 之后存入到字典中Liststring list new Liststring(keys);string keyName FormatKeyNameT(list);// 2.判断是否存在已经加载过的内容AsyncOperationHandleIListT handle;if (resDic.ContainsKey(keyName)){handle resDic[keyName].handle.ConvertIListT();resDic[keyName].count 1;// 异步加载是否结束if (handle.IsDone){foreach(T item in handle.Result) callBack(item);}else{handle.Completed (obj) {if (obj.Status AsyncOperationStatus.Succeeded){foreach (T item in handle.Result)callBack(item);}};}return;}handle Addressables.LoadAssetsAsyncT(list, callBack, mode);handle.Completed (obj) {if (obj.Status AsyncOperationStatus.Failed){Debug.LogWarning(keyName load asset failed);if (resDic.ContainsKey(keyName))resDic.Remove(keyName);}};AddresssablesInfo info new AddresssablesInfo(handle);resDic.Add(keyName, info);}public void LoadAssetAsyncT(Addressables.MergeMode mode, ActionAsyncOperationHandleIListT callBack, params string[] keys){// 1.构建一个 keyName 之后存入到字典中Liststring list new Liststring(keys);string keyName FormatKeyNameT(list);// 2.判断是否存在已经加载过的内容AsyncOperationHandleIListT handle;if (resDic.ContainsKey(keyName)){handle resDic[keyName].handle.ConvertIListT();resDic[keyName].count 1;// 异步加载是否结束if (handle.IsDone){callBack(handle);}else{handle.Completed (obj) {if (obj.Status AsyncOperationStatus.Succeeded){callBack(handle);}};}return;}handle Addressables.LoadAssetsAsyncT(list, null, mode);handle.Completed (obj) {if (obj.Status AsyncOperationStatus.Failed){Debug.LogWarning(keyName load asset failed);if (resDic.ContainsKey(keyName))resDic.Remove(keyName);}else{callBack(handle);}};AddresssablesInfo info new AddresssablesInfo(handle);resDic.Add(keyName, info);}public void ReleaseT(params string[] keys){Liststring list new Liststring(keys);string keyName FormatKeyNameT(list);if ( resDic.ContainsKey(keyName)){resDic[keyName].count - 1;if (resDic[keyName].count 0){AsyncOperationHandleIListT handle resDic[keyName].handle.ConvertIListT();Addressables.Release(handle);resDic.Remove(keyName);}}}public void Clear(){foreach (var item in resDic.Values){Addressables.Release(item.handle);}resDic.Clear();AssetBundle.UnloadAllAssetBundles(true);Resources.UnloadUnusedAssets();GC.Collect();}}
http://www.tj-hxxt.cn/news/228433.html

相关文章:

  • 怎样用dw做网站主页鞍山吧最新消息
  • 网站建设faq川畅科技搜搜 网站设计
  • 贵阳网站设计有哪些建设摩托车官网官方网站
  • 英语培训学校网站怎么做网站开发一年多少钱
  • cad做彩图那个网站应用好用wordpress安装包文件
  • 网站设计建设合同怎样做 云知梦 网站 付费网站
  • 巴南网站建设哪家好龙岗模板网站建设
  • 深圳网站建设合同东莞浩智网站建设开发
  • 做什么类型网站可以吸引用户东莞能做网站的公司
  • 家庭农场做网站的好处黑龙江省网站备案
  • 哈尔滨建设工程信息网站网页界面设计与制作邓文达
  • 网站建设是怎么赚钱的wordpress图片上传到
  • 哪家公司网站建设口碑好温州哪里有网站
  • 北京公司建网站要多少费用建设网站需要下载神呢软件吗
  • 网站建设实训报告模板建筑设计专业的网站
  • 绍兴网站制作推广企业网站建站费用
  • 南京电子商务网站建设wordpress 分词标签
  • 昆明岭蓝网站建设公司网站建设yankt
  • 为什么企业建设银行网站打不开佛山市企业网站seo联系方式
  • 南京网站搭建商务网站建设管理思路
  • 学习做ppt 的网站网站设计深圳哪家强?
  • WordPress单页随机常州网络优化排名
  • 建一个平台网站需要多少钱婚庆网站建设策划案
  • 网站开发技术选型品牌设计作品
  • 建站程序选择荆州北京网站建设
  • 华为公司网站建设方案建设教育网站费用
  • 为什么搜索不到刚做的网站用ppt做网站方法
  • 新颖的网络营销方式seo网络推广专员
  • 网站导航如何用响应式做网站优化排名工具
  • 邢台市做网站电话档案网站建设优秀代表