49 lines
1.6 KiB
C#
49 lines
1.6 KiB
C#
using System;
|
|
using Cysharp.Threading.Tasks;
|
|
using UnityEngine;
|
|
|
|
|
|
namespace Unity.Startup.Procedure
|
|
{
|
|
public enum UpdateProcedureState : byte
|
|
{
|
|
ProcedureEntryState,
|
|
ProcedureGetAppVersionInfoState,
|
|
ProcedureInitPackageState,
|
|
ProcedureDownloadBundleState,
|
|
ProcedurePatchDoneState,
|
|
ProcedureLoadAssembly,
|
|
ProcedureUpdateFinishState
|
|
}
|
|
|
|
public class Procedure : MonoBehaviour
|
|
{
|
|
private SimpleFSM<UpdateProcedureState> _fsm;
|
|
|
|
private async UniTaskVoid Start()
|
|
{
|
|
await UniTask.WaitUntil(() => YooAsset.YooAssets.Initialized);
|
|
_fsm = new SimpleFSM<UpdateProcedureState>();
|
|
_fsm.Register<ProcedureEntryState>(UpdateProcedureState.ProcedureEntryState);
|
|
_fsm.Register<ProcedureGetAppVersionInfoState>(UpdateProcedureState.ProcedureGetAppVersionInfoState);
|
|
_fsm.Register<ProcedureInitPackageState>(UpdateProcedureState.ProcedureInitPackageState);
|
|
_fsm.Register<ProcedureDownloadBundleState>(UpdateProcedureState.ProcedureDownloadBundleState);
|
|
_fsm.Register<ProcedurePatchDoneState>(UpdateProcedureState.ProcedurePatchDoneState);
|
|
_fsm.Register<ProcedureLoadAssembly>(UpdateProcedureState.ProcedureLoadAssembly);
|
|
_fsm.Register<ProcedureUpdateFinishState>(UpdateProcedureState.ProcedureUpdateFinishState);
|
|
_fsm.SwitchState(UpdateProcedureState.ProcedureEntryState);
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
_fsm.Update(Time.deltaTime);
|
|
}
|
|
|
|
private void OnDestroy()
|
|
{
|
|
_fsm.Dispose();
|
|
_fsm = null;
|
|
}
|
|
}
|
|
}
|