下载安装设置方面的不讲了直接上使用的加载卸载代码
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement;
public class ResLoader
{
private string path;
private UnityEngine.Object asset_;
private GameObject go_;
private System.Action<UnityEngine.Object> OnFinish;
public ResLoader(string pPath,System.Action<UnityEngine.Object> pCallBack) {
path = pPath;
OnFinish = pCallBack;
}
public void LoadAsset()
{
Addressables.LoadAsset<UnityEngine.Object>(path).Completed += OnLoadedComplete;
}
public void UnLoadAsset()
{
if (asset_ is GameObject)
{
GameObject.Destroy(go_);
}
Addressables.ReleaseAsset<UnityEngine.Object>(asset_);
asset_ = null;
go_ = null;
OnFinish = null;
}
private void OnLoadedComplete(IAsyncOperation<UnityEngine.Object> res)
{
if (res.Status == AsyncOperationStatus.Succeeded)
{
asset_ = res.Result;
if (asset_ is GameObject)
{
go_ = GameObject.Instantiate<GameObject>(asset_ as GameObject);
OnFinish(go_);
}
else
{
OnFinish(asset_);
}
}
}
}
直接的调用管理类
public static class ResLoadManager
{
public static ResLoader Load(string pPath,System.Action<UnityEngine.Object> pCB)
{
ResLoader loader = new ResLoader(pPath, pCB);
loader.LoadAsset();
return loader;
}
public static void UnLoad(ResLoader pLoader)
{
pLoader.UnLoadAsset();
}
}