using Cysharp.Threading.Tasks; using System.Collections.Generic; using UnityEngine; using YooAsset; using Tuan.GameFramework; namespace Tuan.GameScripts.Main { public class AssetLoad :Singleton { Dictionary assetHandles = new Dictionary(); public async UniTask LoadAsync(string name)where T: Object { if (!assetHandles.ContainsKey(name)) { AssetHandle handle = YooAssets.LoadAssetAsync(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(string name) where T : Object { if (!assetHandles.ContainsKey(name)) { AssetHandle handle = YooAssets.LoadAssetSync(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; } } }