using System.Collections.Generic; using Cysharp.Threading.Tasks; using Game; using YooAsset; namespace Mono { // public class ResourceComponent { private static ResourceComponent instance; public static ResourceComponent Instance { get { if (instance == null) { instance = new ResourceComponent(); } return instance; } } private bool isLoadFinish; private EPlayMode playMode; ResourceUpdatePackageHandle handle; ResourcePackage _defaultPackage; public ResourceComponent() { isLoadFinish = false; EventManager.Instance.Subscribe(UpdaterDoneEventArgs.EventId, UpdaterDoneEvent); YooAssets.Initialize(); } private void UpdaterDoneEvent(object sender, GameEventArgs e) { var args = e as UpdaterDoneEventArgs; isLoadFinish = true; } public async UniTask InitLoadModeAsync(EPlayMode playMode, string packageName) { this.playMode = playMode; handle = new ResourceUpdatePackageHandle(playMode, packageName, EDefaultBuildPipeline.BuiltinBuildPipeline.ToString()); await handle.InitPackageAsync(); while (!this.isLoadFinish) { await UniTask.Yield(); } _defaultPackage = YooAssets.GetPackage("DefaultPackage"); YooAssets.SetDefaultPackage(_defaultPackage); } /// /// 主要用来加载dll config aotdll,因为这时候纤程还没创建,无法使用ResourcesLoaderComponent。 /// 游戏中的资源应该使用ResourcesLoaderComponent来加载 /// public async UniTask LoadAssetAsync(string location) where T : UnityEngine.Object { AssetHandle handle = YooAssets.LoadAssetAsync(location); await handle.Task; T t = (T)handle.AssetObject; handle.Release(); return t; } /// /// 主要用来加载dll config aotdll,因为这时候纤程还没创建,无法使用ResourcesLoaderComponent。 /// 游戏中的资源应该使用ResourcesLoaderComponent来加载 /// public async UniTask> LoadAllAssetsAsync(string location) where T : UnityEngine.Object { AllAssetsHandle allAssetsOperationHandle = YooAssets.LoadAllAssetsAsync(location); await allAssetsOperationHandle.Task; Dictionary dictionary = new Dictionary(); foreach (UnityEngine.Object assetObj in allAssetsOperationHandle.AllAssetObjects) { T t = assetObj as T; dictionary.Add(t.name, t); } allAssetsOperationHandle.Release(); return dictionary; } } }