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

54 lines
1.8 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
{
2025-11-13 08:57:19 +08:00
public class AssetLoader :Singleton <AssetLoader>
2025-11-12 18:39:09 +08:00
{
Dictionary<string, AssetHandle> assetHandles = new Dictionary<string, AssetHandle>();
2025-11-13 08:57:19 +08:00
public async UniTask<T> LoadAsync<T>(string name, LoadingWindow loadingWindow = null) where T : UnityEngine.Object
2025-11-12 18:39:09 +08:00
{
2025-11-13 08:57:19 +08:00
AssetHandle handle = null;
2025-11-12 18:39:09 +08:00
if (!assetHandles.ContainsKey(name))
{
2025-11-13 08:57:19 +08:00
handle = YooAssets.LoadAssetAsync<T>(name);
await handle.ToUniTask(loadingWindow);
2025-11-12 18:39:09 +08:00
assetHandles.Add(name, handle);
Debug.Log($"AssetLoad:{name}");
}
else
{
2025-11-13 08:57:19 +08:00
handle = assetHandles[name];
2025-11-12 18:39:09 +08:00
Debug.Log($"AssetLoad:{name}(已缓存handle)");
}
2025-11-13 08:57:19 +08:00
if (loadingWindow != null)
UIManager.Inst.CloseUI(loadingWindow);
return handle.AssetObject as T;
2025-11-12 18:39:09 +08:00
}
2025-11-13 08:57:19 +08:00
public T Load<T>(string name) where T : UnityEngine.Object
2025-11-12 18:39:09 +08:00
{
2025-11-13 08:57:19 +08:00
AssetHandle handle = null;
2025-11-12 18:39:09 +08:00
if (!assetHandles.ContainsKey(name))
{
2025-11-13 08:57:19 +08:00
handle = YooAssets.LoadAssetSync<T>(name);
2025-11-12 18:39:09 +08:00
assetHandles.Add(name, handle);
Debug.Log($"AssetLoad:{name}");
}
else
{
2025-11-13 08:57:19 +08:00
handle = assetHandles[name];
2025-11-12 18:39:09 +08:00
Debug.Log($"AssetLoad:{name}(已缓存handle)");
}
2025-11-13 08:57:19 +08:00
return handle.AssetObject as T;
2025-11-12 18:39:09 +08:00
}
public AssetHandle GetHandle(string name)
{
if (assetHandles.ContainsKey(name))
return assetHandles[name];
return null;
}
}
}