对网站建设的描述,最简单网站开发软件,和平苏州网站建设,福州网页模板建站☀️博客主页#xff1a;CSDN博客主页#x1f4a8;本文由 萌萌的小木屋 原创#xff0c;首发于 CSDN#x1f4a2;#x1f525;学习专栏推荐#xff1a;面试汇总❗️游戏框架专栏推荐#xff1a;游戏实用框架专栏⛅️点赞 #x1f44d; 收藏 ⭐留言 #x1f4dd;#… ☀️博客主页CSDN博客主页本文由 萌萌的小木屋 原创首发于 CSDN学习专栏推荐面试汇总❗️游戏框架专栏推荐游戏实用框架专栏⛅️点赞 收藏 ⭐留言 如有错误请指正 未来很长值得我们全力奔赴更美好的生活✨ ------------------❤️分割线❤️-------------------------
目的自己工作期间凭当前水准自己写的代码框架持续更新中方便以后自己使用现在开源需要自取
需求Addressable这个官方插件很好用但是还是需要自己在外层封装一个简单的管理器用来管理资源的卸载时机下面就是我工作中常用要的一些方法会继续扩展
类 AddressablesMgr 方法 LoadAsset加载GameObject LoadAndIns加载并初始化GameObject LoadAssetT加载泛型资源 Release释放某一个资源 ReleaseAll释放所有资源 源代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using MFramework;
using UnityEngine.AddressableAssets;
using UnityEngine.Events;
using UnityEngine.ResourceManagement.AsyncOperations;
using System.Threading.Tasks;
using Migu.Atlas;
namespace Migu.Atlas
{public class AddressablesMgr : TMonoSingletonAddressablesMgr, IManager{private Dictionarystring,AsyncOperationHandle m_AllResDic new Dictionarystring, AsyncOperationHandle();public void OnInit(){//m_AllAssets new Dictionarystring, object();}/// summary/// ͬأͷ/// /summary/// param nameassetName/param/// returns/returnspublic GameObject LoadAsset(string assetName){if (!m_AllResDic.ContainsKey(assetName)){AsyncOperationHandle asyncOperationHandle Addressables.LoadAssetAsyncGameObject(assetName);asyncOperationHandle.WaitForCompletion();return (GameObject)asyncOperationHandle.Result;}else {return (GameObject)m_AllResDic[assetName].Result;}}/// summary/// ͬأʼ/// /summary/// param nameassetName/param/// param nameparent/param/// returns/returnspublic GameObject LoadAndIns(string assetName, Transform parent null){GameObject obj LoadAsset(assetName);return Instantiate(obj, parent);}public T LoadAssetT(string assetName){if (!m_AllResDic.ContainsKey(assetName)){AsyncOperationHandle asyncOperationHandle Addressables.LoadAssetAsyncT(assetName);asyncOperationHandle.WaitForCompletion();return (T)asyncOperationHandle.Result;}else{return (T)m_AllResDic[assetName].Result;}}public void Release(string name){if (m_AllResDic.ContainsKey(name)) Addressables.Release(name);else Debug.LogError($未找到需要释放的资源{name});}public void ReleaseAll(){foreach (var item in m_AllResDic){Addressables.Release(item);}m_AllResDic.Clear();}}
}
GitCode地址
有用点个Fork啊
更新记录 2023-5-30 更新了基础常用的Api