Files
plugin-library/Assets/Main/Script/Runtime/Init/Fsm/LoadResMainState.cs

88 lines
2.7 KiB
C#
Raw Normal View History

2025-05-23 18:26:47 +08:00
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<DomainConfig>("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<GameObject>(config.mainPrefab);
await loadOperation;
if (loadOperation.Status == EOperationStatus.Succeed)
{
GameObject loadhotfix = loadOperation.InstantiateSync();
AppConfig.SetDefaultMainInstance(loadhotfix);
if (loadhotfix != null)
{
DomainBase hotfixInstance = loadhotfix.GetComponent<MainDomain>();
if (hotfixInstance == null)
{
hotfixInstance = loadhotfix.AddComponent<MainDomain>();
}
if (hotfixInstance == null)
{
Debug.LogError($"热更类{loadhotfix.name}实例创建失败必须继承MonoBehaviour");
return;
}
// 原有调用逻辑修改为使用实例
hotfixInstance.OnEnter("");
hotfixInstance.OnEnterAsync("");
}
}
}
public override UniTask OnEnterAsync<T>(T param)
{
return UniTask.CompletedTask;
}
public override UniTask OnEnterAsync<T1, T2>(T1 param1, T2 param2)
{
return UniTask.CompletedTask;
}
public override void OnUpdate()
{
base.OnUpdate();
}
public override UniTask OnExitAsync()
{
return UniTask.CompletedTask;
}
}
}