using Cysharp.Threading.Tasks; using Main; using UnityEngine; using YooAsset; namespace Stary.Evo { public class LoadResMainState : AbstractFSMIState { private string _doMain = "Main"; public LoadResMainState(IFsmSystem system) : base(system) { } public override async UniTask OnEnterAsync() { Debug.Log("加载资源..."); var package = YooAssets.GetPackage(_doMain); DomainConfig config = null; //加载热更配置文件 var loadHotfixSettingsOp = package.LoadAssetAsync("Config_DomainConfig"); await loadHotfixSettingsOp; if (loadHotfixSettingsOp.Status == EOperationStatus.Succeed) { //更新成功 Debug.Log($"UnityEvo:加载主配置文件 loadHotfixSettings : 【成功】"); config = loadHotfixSettingsOp.AssetObject as DomainConfig; } else { Debug.LogError($"UnityEvo:加载主配置文件 loadHotfixSettings : 【失败】"); } // 加载热更资源 var loadOperation = package.LoadAssetAsync(config.mainPrefab); await loadOperation; if (loadOperation.Status == EOperationStatus.Succeed) { GameObject loadhotfix = loadOperation.InstantiateSync(); AppConfig.SetDefaultMainInstance(loadhotfix); if (loadhotfix != null) { DomainBase hotfixInstance = loadhotfix.GetComponent(); if (hotfixInstance == null) { hotfixInstance = loadhotfix.AddComponent(); } if (hotfixInstance == null) { Debug.LogError($"热更类{loadhotfix.name}实例创建失败!必须继承MonoBehaviour"); return; } // 原有调用逻辑修改为使用实例 hotfixInstance.OnEnter(""); hotfixInstance.OnEnterAsync(""); } } } public override UniTask OnEnterAsync(T param) { return UniTask.CompletedTask; } public override UniTask OnEnterAsync(T1 param1, T2 param2) { return UniTask.CompletedTask; } public override void OnUpdate() { base.OnUpdate(); } public override UniTask OnExitAsync() { return UniTask.CompletedTask; } } }