Files
plugin-library/Assets/Main/Script/Runtime/Fsm/LoadResMainState.cs
2025-05-23 18:26:47 +08:00

88 lines
2.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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;
}
}
}