update space shooter

This commit is contained in:
何冠峰
2026-01-13 17:09:18 +08:00
parent 246a62a675
commit b3d024743c
4 changed files with 26 additions and 55 deletions

View File

@@ -19,7 +19,7 @@ public class Boot : MonoBehaviour
Application.runInBackground = true; Application.runInBackground = true;
DontDestroyOnLoad(this.gameObject); DontDestroyOnLoad(this.gameObject);
} }
IEnumerator Start() void Start()
{ {
// 游戏管理器 // 游戏管理器
GameManager.Instance.Behaviour = this; GameManager.Instance.Behaviour = this;
@@ -34,16 +34,12 @@ public class Boot : MonoBehaviour
var go = Resources.Load<GameObject>("PatchWindow"); var go = Resources.Load<GameObject>("PatchWindow");
GameObject.Instantiate(go); GameObject.Instantiate(go);
// 开始补丁更新流程 // 补丁更新流程
var operation = new PatchOperation("DefaultPackage", PlayMode); PatchManager.Create("DefaultPackage", PlayMode);
YooAssets.StartOperation(operation); PatchManager.Start();
yield return operation; }
private void Update()
// 设置默认的资源包 {
var gamePackage = YooAssets.GetPackage("DefaultPackage"); PatchManager.Update();
YooAssets.SetDefaultPackage(gamePackage);
// 切换到主页面场景
SceneEventDefine.ChangeToHomeScene.SendEventMessage();
} }
} }

View File

@@ -2,19 +2,23 @@
using System.Collections.Generic; using System.Collections.Generic;
using UnityEngine; using UnityEngine;
using UniFramework.Machine; using UniFramework.Machine;
using YooAsset;
internal class FsmStartGame : IStateNode internal class FsmStartGame : IStateNode
{ {
private PatchOperation _owner;
void IStateNode.OnCreate(StateMachine machine) void IStateNode.OnCreate(StateMachine machine)
{ {
_owner = machine.Owner as PatchOperation;
} }
void IStateNode.OnEnter() void IStateNode.OnEnter()
{ {
PatchEventDefine.PatchStepsChange.SendEventMessage("开始游戏!"); PatchEventDefine.PatchStepsChange.SendEventMessage("开始游戏!");
_owner.SetFinish();
// 设置默认的资源包
var gamePackage = YooAssets.GetPackage("DefaultPackage");
YooAssets.SetDefaultPackage(gamePackage);
// 切换到主页面场景
SceneEventDefine.ChangeToHomeScene.SendEventMessage();
} }
void IStateNode.OnUpdate() void IStateNode.OnUpdate()
{ {

View File

@@ -3,24 +3,13 @@ using UniFramework.Machine;
using UniFramework.Event; using UniFramework.Event;
using YooAsset; using YooAsset;
public class PatchOperation : GameAsyncOperation public static class PatchManager
{ {
private enum ESteps private static readonly EventGroup _eventGroup = new EventGroup();
private static StateMachine _machine;
public static void Create(string packageName, EPlayMode playMode)
{ {
None,
Update,
Done,
}
private readonly EventGroup _eventGroup = new EventGroup();
private readonly StateMachine _machine;
private readonly string _packageName;
private ESteps _steps = ESteps.None;
public PatchOperation(string packageName, EPlayMode playMode)
{
_packageName = packageName;
// 注册监听事件 // 注册监听事件
_eventGroup.AddListener<UserEventDefine.UserTryInitialize>(OnHandleEventMessage); _eventGroup.AddListener<UserEventDefine.UserTryInitialize>(OnHandleEventMessage);
_eventGroup.AddListener<UserEventDefine.UserBeginDownloadWebFiles>(OnHandleEventMessage); _eventGroup.AddListener<UserEventDefine.UserBeginDownloadWebFiles>(OnHandleEventMessage);
@@ -29,7 +18,7 @@ public class PatchOperation : GameAsyncOperation
_eventGroup.AddListener<UserEventDefine.UserTryDownloadWebFiles>(OnHandleEventMessage); _eventGroup.AddListener<UserEventDefine.UserTryDownloadWebFiles>(OnHandleEventMessage);
// 创建状态机 // 创建状态机
_machine = new StateMachine(this); _machine = new StateMachine(null);
_machine.AddNode<FsmInitializePackage>(); _machine.AddNode<FsmInitializePackage>();
_machine.AddNode<FsmRequestPackageVersion>(); _machine.AddNode<FsmRequestPackageVersion>();
_machine.AddNode<FsmUpdatePackageManifest>(); _machine.AddNode<FsmUpdatePackageManifest>();
@@ -42,37 +31,19 @@ public class PatchOperation : GameAsyncOperation
_machine.SetBlackboardValue("PackageName", packageName); _machine.SetBlackboardValue("PackageName", packageName);
_machine.SetBlackboardValue("PlayMode", playMode); _machine.SetBlackboardValue("PlayMode", playMode);
} }
protected override void OnStart() public static void Start()
{ {
_steps = ESteps.Update;
_machine.Run<FsmInitializePackage>(); _machine.Run<FsmInitializePackage>();
} }
protected override void OnUpdate() public static void Update()
{
if (_steps == ESteps.None || _steps == ESteps.Done)
return;
if (_steps == ESteps.Update)
{ {
_machine.Update(); _machine.Update();
} }
}
protected override void OnAbort()
{
}
public void SetFinish()
{
_steps = ESteps.Done;
_eventGroup.RemoveAllListener();
Status = EOperationStatus.Succeed;
Debug.Log($"Package {_packageName} patch done !");
}
/// <summary> /// <summary>
/// 接收事件 /// 接收事件
/// </summary> /// </summary>
private void OnHandleEventMessage(IEventMessage message) private static void OnHandleEventMessage(IEventMessage message)
{ {
if (message is UserEventDefine.UserTryInitialize) if (message is UserEventDefine.UserTryInitialize)
{ {