Files
TuanTuan-Engine/Assets/GameScripts/Main/AssetLoad.cs

52 lines
1.7 KiB
C#
Raw Normal View History

2025-11-12 18:39:09 +08:00
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;
}
}
}