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;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|