mirror of https://github.com/tuyoogame/YooAsset
2.6 KiB
2.6 KiB
解决方案
FairyGUI支持解决方案
注意:在FairyGUI的面板销毁的时候,将资源句柄列表释放,否则会造成资源泄漏。
// 资源句柄列表
private List<AssetOperationHandle> _handles = new List<AssetOperationHandle>(100);
// 加载方法
private object LoadFunc(string name, string extension, System.Type type, out DestroyMethod method)
{
method = DestroyMethod.None; //注意:这里一定要设置为None
string location = $"FairyRes/{name}{extension}";
var handle = YooAssets.LoadAssetSync(location , type);
_handles.Add(handle);
return handle.AssetObject;
}
// 执行FairyGUI的添加包函数
UIPackage.AddPackage(name, LoadFunc);
// 释放资源句柄列表
private void ReleaseHandles()
{
foreach(var handle in _handles)
{
handle.Release();
}
_handles.Clear();
}
UniTask支持解决方案
- 请去下载对应的源码,并删除此目录最后的波浪线
- 在项目的
asmdef
文件中添加对UniTask.YooAsset
的引用 - 在 UniTask
_InternalVisibleTo.cs
文件中增加[assembly: InternalsVisibleTo("UniTask.YooAsset")]
后即可使用
代码示例
var handle = YooAssets.LoadAssetAsync<GameObject>("Assets/Res/Prefabs/TestImg.prefab");
await handle.ToUniTask();
var obj = handle.AssetObject as GameObject;
var go = Instantiate(obj, transform);
go.transform.localPosition = Vector3.zero;
go.transform.localScale = Vector3.one;
分布式构建解决方案
1.3.0+版本升级指南
在升级之前请导出AssetBundleCollector的配置为XML文件,然后升级YooAssets库。
首次需要打开AssetBundleCollector窗口,然后导入之前保存的XML文件。
在运行游戏之前,请保证资源包可以构建成功!
public static YooAssetPackage AssetPackage;
IEnumerator Start()
{
// 初始化YooAssets资源系统(必须代码)
YooAssets.Initialize();
// 创建资源包实例
AssetPackage = YooAssets.CreateAssetPackage("DefaultPackage");
// 初始化资源包
......
yield return AssetPackage.InitializeAsync(createParameters);
// 更新资源包版本
......
var operation = AssetPackage.UpdateManifestAsync(packageCRC);
yield return operation;
// 下载更新文件
var downloader = AssetPackage.CreatePatchDownloader(downloadingMaxNum, failedTryAgain);
downloader.BeginDownload();
yield return downloader;
// 加载资源对象
var assetHandle = AssetPackage.LoadAssetAsync("Assets/GameRes/npc.prefab");
yield return assetHandle;
......
}