88 lines
2.7 KiB
C#
88 lines
2.7 KiB
C#
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;
|
||
}
|
||
}
|
||
} |