52 lines
1.7 KiB
C#
52 lines
1.7 KiB
C#
|
|
using Cysharp.Threading.Tasks;
|
||
|
|
using System.Collections.Generic;
|
||
|
|
using UnityEngine;
|
||
|
|
using YooAsset;
|
||
|
|
using Tuan.GameFramework;
|
||
|
|
|
||
|
|
namespace Tuan.GameScripts.Main
|
||
|
|
{
|
||
|
|
public class AssetLoad :Singleton <AssetLoad>
|
||
|
|
{
|
||
|
|
Dictionary<string, AssetHandle> assetHandles = new Dictionary<string, AssetHandle>();
|
||
|
|
public async UniTask<T> LoadAsync<T>(string name)where T: Object
|
||
|
|
{
|
||
|
|
if (!assetHandles.ContainsKey(name))
|
||
|
|
{
|
||
|
|
AssetHandle handle = YooAssets.LoadAssetAsync<T>(name);
|
||
|
|
await handle.ToUniTask();
|
||
|
|
assetHandles.Add(name, handle);
|
||
|
|
Debug.Log($"AssetLoad:{name}");
|
||
|
|
return handle.AssetObject as T;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
AssetHandle handle = assetHandles[name];
|
||
|
|
Debug.Log($"AssetLoad:{name}(已缓存handle)");
|
||
|
|
return handle.AssetObject as T;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
public T Load<T>(string name) where T : Object
|
||
|
|
{
|
||
|
|
if (!assetHandles.ContainsKey(name))
|
||
|
|
{
|
||
|
|
AssetHandle handle = YooAssets.LoadAssetSync<T>(name);
|
||
|
|
assetHandles.Add(name, handle);
|
||
|
|
Debug.Log($"AssetLoad:{name}");
|
||
|
|
return handle.AssetObject as T;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
AssetHandle handle = assetHandles[name];
|
||
|
|
Debug.Log($"AssetLoad:{name}(已缓存handle)");
|
||
|
|
return handle.AssetObject as T;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
public AssetHandle GetHandle(string name)
|
||
|
|
{
|
||
|
|
if (assetHandles.ContainsKey(name))
|
||
|
|
return assetHandles[name];
|
||
|
|
return null;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|