增加procedure模块
This commit is contained in:
parent
6b282e8d1d
commit
88c8022c4d
@ -79,7 +79,7 @@ MonoBehaviour:
|
||||
m_BlockingObjects: 0
|
||||
m_BlockingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 55
|
||||
m_Bits: 4294967295
|
||||
--- !u!114 &1744287959665422355
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@ -86,7 +86,7 @@ MonoBehaviour:
|
||||
m_BlockingObjects: 0
|
||||
m_BlockingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 55
|
||||
m_Bits: 4294967295
|
||||
--- !u!114 &1590262444720639052
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@ -27,6 +27,7 @@ public class UILoadUpdate : UITabWindow<ui_UILoadUpdateWindow>
|
||||
|
||||
private void OnHandleTestUIOpenEevent(TestUIOpenEvent obj)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void CreateTest()
|
||||
|
||||
@ -6,7 +6,7 @@ using YooAsset;
|
||||
|
||||
namespace Unity.Startup.Procedure
|
||||
{
|
||||
internal sealed class ProcedureDownloadBundleState : StateBase<UpdateProcedureState>
|
||||
internal sealed class ProcedureDownloadBundleState : ProcedureBase
|
||||
{
|
||||
ResourceDownloaderOperation downloader;
|
||||
|
||||
@ -15,7 +15,7 @@ namespace Unity.Startup.Procedure
|
||||
CreateDownloader();
|
||||
}
|
||||
|
||||
protected override void OnExit()
|
||||
protected override void OnLeave()
|
||||
{
|
||||
downloader.CancelDownload();
|
||||
downloader = null;
|
||||
@ -27,7 +27,7 @@ namespace Unity.Startup.Procedure
|
||||
if (downloader.TotalDownloadCount == 0)
|
||||
{
|
||||
Log.Info("没有发现需要下载的资源");
|
||||
SwitchState(UpdateProcedureState.ProcedurePatchDoneState);
|
||||
SwitchProcedure<ProcedurePatchDoneState>();
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -66,7 +66,7 @@ namespace Unity.Startup.Procedure
|
||||
return;
|
||||
}
|
||||
|
||||
SwitchState(UpdateProcedureState.ProcedurePatchDoneState);
|
||||
SwitchProcedure<ProcedurePatchDoneState>();
|
||||
}
|
||||
|
||||
private void OnDownloadProgressCallback(DownloadUpdateData data)
|
||||
|
||||
@ -10,14 +10,14 @@ namespace Unity.Startup.Procedure
|
||||
/// <summary>
|
||||
/// 启动游戏
|
||||
/// </summary>
|
||||
public class ProcedureEntryState : StateBase<UpdateProcedureState>
|
||||
public class ProcedureEntryState : ProcedureBase
|
||||
{
|
||||
protected override void OnEnter()
|
||||
{
|
||||
LauncherUIHandler.Start();
|
||||
if (GameApp.Resource.PlayMode == EPlayMode.OfflinePlayMode || GameApp.Resource.PlayMode == EPlayMode.EditorSimulateMode)
|
||||
{
|
||||
SwitchState(UpdateProcedureState.ProcedureInitPackageState);
|
||||
SwitchProcedure<ProcedureInitPackageState>();
|
||||
return;
|
||||
}
|
||||
|
||||
@ -31,7 +31,7 @@ namespace Unity.Startup.Procedure
|
||||
if (GameApp.Resource.PlayMode == EPlayMode.WebPlayMode)
|
||||
{
|
||||
HttpHelper.CDNUrl = "http://127.0.0.1:8080/CDN/WebGL";
|
||||
SwitchState(UpdateProcedureState.ProcedureInitPackageState);
|
||||
SwitchProcedure<ProcedureInitPackageState>();
|
||||
return;
|
||||
}
|
||||
|
||||
@ -43,7 +43,7 @@ namespace Unity.Startup.Procedure
|
||||
try
|
||||
{
|
||||
await HttpHelper.GetRemoteVersion();
|
||||
SwitchState(UpdateProcedureState.ProcedureGetAppVersionInfoState);
|
||||
SwitchProcedure<ProcedureGetAppVersionInfoState>();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
||||
@ -9,7 +9,7 @@ namespace Unity.Startup.Procedure
|
||||
/// <summary>
|
||||
/// 获取版本信息
|
||||
/// </summary>
|
||||
public sealed class ProcedureGetAppVersionInfoState : StateBase<UpdateProcedureState>
|
||||
public sealed class ProcedureGetAppVersionInfoState : ProcedureBase
|
||||
{
|
||||
protected override void OnEnter()
|
||||
{
|
||||
@ -34,8 +34,7 @@ namespace Unity.Startup.Procedure
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
SwitchState(UpdateProcedureState.ProcedureInitPackageState);
|
||||
SwitchProcedure<ProcedureInitPackageState>();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
||||
@ -4,7 +4,7 @@ using YooAsset;
|
||||
|
||||
namespace Unity.Startup.Procedure
|
||||
{
|
||||
internal sealed class ProcedureInitPackageState : StateBase<UpdateProcedureState>
|
||||
internal sealed class ProcedureInitPackageState : ProcedureBase
|
||||
{
|
||||
private int maxFailedCount = 0;
|
||||
|
||||
@ -66,11 +66,10 @@ namespace Unity.Startup.Procedure
|
||||
{
|
||||
if (GameApp.Resource.PlayMode == EPlayMode.OfflinePlayMode)
|
||||
{
|
||||
SwitchState(UpdateProcedureState.ProcedurePatchDoneState);
|
||||
SwitchProcedure<ProcedurePatchDoneState>();
|
||||
return;
|
||||
}
|
||||
|
||||
SwitchState(UpdateProcedureState.ProcedureDownloadBundleState);
|
||||
SwitchProcedure<ProcedureDownloadBundleState>();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@ -12,7 +12,7 @@ using HybridCLR;
|
||||
|
||||
namespace Unity.Startup.Procedure
|
||||
{
|
||||
public sealed class ProcedureLoadAssembly : StateBase<UpdateProcedureState>
|
||||
public sealed class ProcedureLoadAssembly : ProcedureBase
|
||||
{
|
||||
#if ENABLE_HYBRIDCLR
|
||||
private int m_LoadAssetCount;
|
||||
@ -33,7 +33,7 @@ namespace Unity.Startup.Procedure
|
||||
protected override void OnEnter()
|
||||
{
|
||||
#if !ENABLE_HYBRIDCLR
|
||||
SwitchState(UpdateProcedureState.ProcedureUpdateFinishState);
|
||||
SwitchProcedure<ProcedureUpdateFinishState>();
|
||||
return;
|
||||
#endif
|
||||
|
||||
@ -78,7 +78,7 @@ namespace Unity.Startup.Procedure
|
||||
|
||||
#if ENABLE_HYBRIDCLR
|
||||
|
||||
protected override void OnUpdate(float deltaTime)
|
||||
protected override void OnUpdate()
|
||||
{
|
||||
if (!m_LoadAssemblyComplete)
|
||||
{
|
||||
@ -95,7 +95,7 @@ namespace Unity.Startup.Procedure
|
||||
|
||||
private void AllAssemblyLoadComplete()
|
||||
{
|
||||
SwitchState(UpdateProcedureState.ProcedureUpdateFinishState);
|
||||
SwitchProcedure<ProcedureUpdateFinishState>();
|
||||
|
||||
if (m_MainLogicAssembly == null)
|
||||
{
|
||||
|
||||
@ -6,7 +6,7 @@ using YooAsset;
|
||||
|
||||
namespace Unity.Startup.Procedure
|
||||
{
|
||||
internal sealed class ProcedurePatchDoneState : StateBase<UpdateProcedureState>
|
||||
internal sealed class ProcedurePatchDoneState : ProcedureBase
|
||||
{
|
||||
protected override void OnEnter()
|
||||
{
|
||||
@ -18,7 +18,7 @@ namespace Unity.Startup.Procedure
|
||||
private void ClearCacheCompleted(AsyncOperationBase obj)
|
||||
{
|
||||
Log.Info($"清理包裹缓存完成");
|
||||
SwitchState(UpdateProcedureState.ProcedureLoadAssembly);
|
||||
SwitchProcedure<ProcedureLoadAssembly>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,19 +1,19 @@
|
||||
using Cysharp.Threading.Tasks;
|
||||
using AlicizaX.Fsm.Runtime;
|
||||
using UnityEngine;
|
||||
using YooAsset;
|
||||
|
||||
|
||||
using AlicizaX;
|
||||
|
||||
namespace Unity.Startup.Procedure
|
||||
{
|
||||
/// <summary>
|
||||
/// 启动热更新游戏
|
||||
/// </summary>
|
||||
public sealed class ProcedureUpdateFinishState : StateBase<UpdateProcedureState>
|
||||
public sealed class ProcedureUpdateFinishState : ProcedureBase
|
||||
{
|
||||
protected override void OnEnter()
|
||||
{
|
||||
base.OnEnter();
|
||||
LauncherUIHandler.Dispose();
|
||||
GameApp.Procedure.ClearAllProcedures();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,48 +0,0 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
32
Client/Assets/Scripts/Startup/Procedure/ProcedureEntry.cs
Normal file
32
Client/Assets/Scripts/Startup/Procedure/ProcedureEntry.cs
Normal file
@ -0,0 +1,32 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using AlicizaX;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
|
||||
|
||||
namespace Unity.Startup.Procedure
|
||||
{
|
||||
public class ProcedureEntry : MonoBehaviour
|
||||
{
|
||||
private async UniTaskVoid Start()
|
||||
{
|
||||
await UniTask.WaitUntil(() => YooAsset.YooAssets.Initialized);
|
||||
|
||||
GameApp.Procedure.InitializeProcedure(
|
||||
new List<IProcedure>
|
||||
{
|
||||
new ProcedureEntryState(),
|
||||
new ProcedureGetAppVersionInfoState(),
|
||||
new ProcedureInitPackageState(),
|
||||
new ProcedureDownloadBundleState(),
|
||||
new ProcedurePatchDoneState(),
|
||||
new ProcedureLoadAssembly(),
|
||||
new ProcedureUpdateFinishState(),
|
||||
},
|
||||
typeof(ProcedureEntryState)
|
||||
);
|
||||
Destroy(gameObject);
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1 +1 @@
|
||||
70bf86ea
|
||||
81bfd4e0
|
||||
@ -10,7 +10,7 @@
|
||||
"BuildPipeline": "EditorSimulateBuildPipeline",
|
||||
"PackageName": "DefaultPackage",
|
||||
"PackageVersion": "Simulate",
|
||||
"PackageNote": "2025/11/17 16:58:36",
|
||||
"PackageNote": "2025/11/18 16:08:53",
|
||||
"AssetList": [
|
||||
{
|
||||
"Address": "A1",
|
||||
@ -1603,7 +1603,7 @@
|
||||
"UnityCRC": 0,
|
||||
"FileHash": "8382993c3598a4a2e8d429b0d7a6f9f1",
|
||||
"FileCRC": 0,
|
||||
"FileSize": 9696,
|
||||
"FileSize": 9704,
|
||||
"Encrypted": false,
|
||||
"Tags": [
|
||||
"UI"
|
||||
@ -1615,7 +1615,7 @@
|
||||
"UnityCRC": 0,
|
||||
"FileHash": "e0807c700d7f154aa3711c1bf07383d6",
|
||||
"FileCRC": 0,
|
||||
"FileSize": 34603,
|
||||
"FileSize": 34611,
|
||||
"Encrypted": false,
|
||||
"Tags": [
|
||||
"UI"
|
||||
|
||||
@ -1 +1 @@
|
||||
Subproject commit 820f568dcf70c76f5f1058a4bcd9cace314fcd69
|
||||
Subproject commit 5051b25b725d4c095f250847b63c138f09b41063
|
||||
@ -1 +1 @@
|
||||
Subproject commit e31dda94ce699d93a5a8fada24152fcd1d0816ab
|
||||
Subproject commit 958364080f889abb03729db844a2b0d0d1052e5e
|
||||
Loading…
Reference in New Issue
Block a user