用unity写一个从ab包加载资源,并能自动加载依赖包的方法
时间: 2023-05-28 14:05:59 浏览: 303
以下是一个简单的从ab包加载资源的方法,可以自动加载依赖包:
```csharp
IEnumerator LoadAssetBundle(string bundleName, string assetName, Action<UnityEngine.Object> callback)
{
// 加载ab包
AssetBundle ab = AssetBundle.LoadFromFile(Application.streamingAssetsPath + "/" + bundleName);
// 加载依赖的ab包
string[] dependencies = ab.GetAllDependencies();
foreach (string dependency in dependencies)
{
AssetBundle.LoadFromFile(Application.streamingAssetsPath + "/" + dependency);
}
// 加载资源
AssetBundleRequest request = ab.LoadAssetAsync(assetName, typeof(UnityEngine.Object));
yield return request;
// 返回加载的资源
if (callback != null)
{
callback(request.asset);
}
// 卸载ab包
ab.Unload(false);
}
```
使用方法:
```csharp
StartCoroutine(LoadAssetBundle("mybundle", "myasset", (obj) =>
{
// 加载成功后的回调
GameObject.Instantiate(obj);
}));
```
其中,`mybundle`是要加载的ab包的名称,`myasset`是要加载的资源的名称,`callback`是加载成功后的回调,参数`obj`是加载的资源对象。该方法会自动加载依赖的ab包,并在加载完成后卸载ab包。
阅读全文