添加流程管理器
parent
3feca978f6
commit
b99d4df2cb
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a417fc0a3018aa842b6063d898d44411
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,13 @@
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace ZC
|
||||||
|
{
|
||||||
|
public interface IProcedure
|
||||||
|
{
|
||||||
|
ProcedureType procedureType { get; }
|
||||||
|
void Init();
|
||||||
|
void OnEnter();
|
||||||
|
void OnUpdate(float dateTime);
|
||||||
|
void OnLeave();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9f2b91c9316244849faa0d4f168cbc7e
|
||||||
|
timeCreated: 1712130599
|
|
@ -0,0 +1,3 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: fb2f9fcc16a44d4cb389d7a19b16d758
|
||||||
|
timeCreated: 1712382042
|
|
@ -0,0 +1,65 @@
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using ZGame;
|
||||||
|
|
||||||
|
namespace ZC
|
||||||
|
{
|
||||||
|
[Procedure(ProcedureType.GameSceneLogicProcedure)]
|
||||||
|
class GameSceneLogicProcedure : ProcedureBase
|
||||||
|
{
|
||||||
|
private Dictionary<string, List<GameObject>> dic = new Dictionary<string, List<GameObject>>();
|
||||||
|
TestZhongLi testZhongLi;
|
||||||
|
|
||||||
|
public override void Init()
|
||||||
|
{
|
||||||
|
base.Init();
|
||||||
|
EventManager.Instance.Subscribe(LoadModelEventArgs.EventId, this.LoadModelEvent);
|
||||||
|
EventManager.Instance.Subscribe(DeleteModelEventArgs.EventId, this.DeleteModelEvent);
|
||||||
|
|
||||||
|
testZhongLi = new TestZhongLi();
|
||||||
|
ZCGame.ObjectManager.Add(testZhongLi);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DeleteModelEvent(object sender, GameEventArgs e)
|
||||||
|
{
|
||||||
|
var args = e as DeleteModelEventArgs;
|
||||||
|
if (this.dic.TryGetValue(args.modelName, out var list))
|
||||||
|
{
|
||||||
|
GameObject.DestroyImmediate(list[0]);
|
||||||
|
list.RemoveAt(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LoadModelEvent(object sender, GameEventArgs e)
|
||||||
|
{
|
||||||
|
var args = e as LoadModelEventArgs;
|
||||||
|
var gameObject = ResourcesLocalComponent.Instance.LoadGameObjectSync(args.modelName);
|
||||||
|
if (this.dic.TryGetValue(args.modelName, out var list))
|
||||||
|
{
|
||||||
|
list.Add(gameObject);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.dic[args.modelName] = new List<GameObject>() { gameObject };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Dispose()
|
||||||
|
{
|
||||||
|
base.Dispose();
|
||||||
|
EventManager.Instance.Unsubscribe(LoadModelEventArgs.EventId, this.LoadModelEvent);
|
||||||
|
EventManager.Instance.Unsubscribe(DeleteModelEventArgs.EventId, this.DeleteModelEvent);
|
||||||
|
ZCGame.ObjectManager.Remove(this.testZhongLi.Id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void OnEnter()
|
||||||
|
{
|
||||||
|
base.OnEnter();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void OnLeave()
|
||||||
|
{
|
||||||
|
base.OnLeave();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: cf5a711399ac4bc19ef745cf5811680f
|
||||||
|
timeCreated: 1719555722
|
|
@ -0,0 +1,27 @@
|
||||||
|
using Cysharp.Threading.Tasks;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace ZC
|
||||||
|
{
|
||||||
|
[Procedure(ProcedureType.LoadingGameSceneProcedure)]
|
||||||
|
class LoadingGameSceneProcedure : ProcedureBase
|
||||||
|
{
|
||||||
|
public override void OnEnter()
|
||||||
|
{
|
||||||
|
base.OnEnter();
|
||||||
|
|
||||||
|
UniTask.Create(async () =>
|
||||||
|
{
|
||||||
|
await ResourcesLocalComponent.Instance.LoadSceneAsync(AssetsConst.Assets_DemoGame_GameRes_Scene_Game_unity);
|
||||||
|
var loadAssetAsync = await ResourcesLocalComponent.Instance.LoadAssetAndInsAsync(AssetsConst.Assets_DemoGame_GameRes_Entity_Cube_prefab);
|
||||||
|
Debug.Log("加载的是:" + loadAssetAsync);
|
||||||
|
ZCGame.ProcedureManager.ChangeProcedure(ProcedureType.GameSceneLogicProcedure);
|
||||||
|
}).Forget();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void OnLeave()
|
||||||
|
{
|
||||||
|
base.OnLeave();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2447a05f6e1b45ec8ad5ad14a079ea95
|
||||||
|
timeCreated: 1712134175
|
|
@ -0,0 +1,15 @@
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace ZC
|
||||||
|
{
|
||||||
|
[AttributeUsage(AttributeTargets.Class)]
|
||||||
|
class ProcedureAttribute: Attribute
|
||||||
|
{
|
||||||
|
public ProcedureType ProcedureType { get; set; }
|
||||||
|
|
||||||
|
public ProcedureAttribute(ProcedureType type)
|
||||||
|
{
|
||||||
|
this.ProcedureType = type;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 51afbf213c614f14aab69723edd5e136
|
||||||
|
timeCreated: 1712242973
|
|
@ -0,0 +1,36 @@
|
||||||
|
using System;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace ZC
|
||||||
|
{
|
||||||
|
abstract class ProcedureBase : IProcedure
|
||||||
|
{
|
||||||
|
private ProcedureType _procedureType;
|
||||||
|
|
||||||
|
public ProcedureType procedureType => this._procedureType;
|
||||||
|
|
||||||
|
public virtual void Init()
|
||||||
|
{
|
||||||
|
var value = this.GetType().ToString().Split(".");
|
||||||
|
this._procedureType = Enum.Parse<ProcedureType>(value[^1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual void OnEnter()
|
||||||
|
{
|
||||||
|
Debug.Log($"Enter {procedureType} procedure !!!");
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual void OnUpdate(float dateTime)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual void OnLeave()
|
||||||
|
{
|
||||||
|
Debug.Log($"Leave {procedureType} procedure !!!");
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual void Dispose()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1d9dc4beeffa4c0694df15db53ae4125
|
||||||
|
timeCreated: 1712132542
|
|
@ -0,0 +1,99 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace ZC
|
||||||
|
{
|
||||||
|
public interface IProcedureManager
|
||||||
|
{
|
||||||
|
// void StartProcedure<T>() where T : IProcedure;
|
||||||
|
void StartProcedure(ProcedureType procedureType);
|
||||||
|
|
||||||
|
// void ChangeProcedure<T>();
|
||||||
|
void ChangeProcedure(ProcedureType procedureType);
|
||||||
|
|
||||||
|
IProcedure GetProcedure(ProcedureType procedureType);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class ProcedureManager : ManagerBase<ProcedureManager>, IProcedureManager
|
||||||
|
{
|
||||||
|
private Dictionary<ProcedureType, IProcedure> _procedures = new Dictionary<ProcedureType, IProcedure>();
|
||||||
|
private IProcedure currentProcedure;
|
||||||
|
|
||||||
|
public override void OnInit()
|
||||||
|
{
|
||||||
|
base.OnInit();
|
||||||
|
|
||||||
|
var types = new List<(Type, ProcedureAttribute)>();
|
||||||
|
AssemblyManager.GetTypesInhertType(typeof(ProcedureBase), types);
|
||||||
|
foreach (var (type, procedureAttribute) in types)
|
||||||
|
{
|
||||||
|
var procedureType = procedureAttribute.ProcedureType;
|
||||||
|
_procedures.Add(procedureType, (IProcedure)Activator.CreateInstance(type, false));
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var procedureBase in _procedures.Values)
|
||||||
|
{
|
||||||
|
procedureBase.Init();
|
||||||
|
Debug.Log($"add procedure : {procedureBase.procedureType}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void OnDispose()
|
||||||
|
{
|
||||||
|
base.OnDispose();
|
||||||
|
_procedures = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddProcedure(ProcedureBase[] procedureBases)
|
||||||
|
{
|
||||||
|
foreach (var procedureBase in procedureBases)
|
||||||
|
{
|
||||||
|
procedureBase.Init();
|
||||||
|
Debug.Log($"add procedure : {procedureBase.procedureType}");
|
||||||
|
this._procedures.Add(procedureBase.procedureType, procedureBase);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void OnUpdate(float dateTime)
|
||||||
|
{
|
||||||
|
base.OnUpdate(dateTime);
|
||||||
|
this.currentProcedure?.OnUpdate(dateTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void StartProcedure(ProcedureType procedureType)
|
||||||
|
{
|
||||||
|
if (this.currentProcedure != null)
|
||||||
|
this.currentProcedure.OnLeave();
|
||||||
|
|
||||||
|
if (this._procedures.TryGetValue(procedureType, out var procedure))
|
||||||
|
{
|
||||||
|
this.currentProcedure = procedure;
|
||||||
|
this.currentProcedure.OnEnter();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ChangeProcedure(ProcedureType procedureType)
|
||||||
|
{
|
||||||
|
if (this.currentProcedure != null)
|
||||||
|
this.currentProcedure.OnLeave();
|
||||||
|
|
||||||
|
if (this._procedures.TryGetValue(procedureType, out var procedure))
|
||||||
|
{
|
||||||
|
this.currentProcedure = procedure;
|
||||||
|
this.currentProcedure.OnEnter();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public IProcedure GetProcedure(ProcedureType procedureType)
|
||||||
|
{
|
||||||
|
if (this._procedures.TryGetValue(procedureType, out var procedure))
|
||||||
|
{
|
||||||
|
return procedure;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b10aa4c32af342c694cfde07d1251365
|
||||||
|
timeCreated: 1712132397
|
|
@ -0,0 +1,14 @@
|
||||||
|
namespace ZC
|
||||||
|
{
|
||||||
|
public enum ProcedureType
|
||||||
|
{
|
||||||
|
LoadingGameSceneProcedure,
|
||||||
|
GameSceneLogicProcedure,
|
||||||
|
|
||||||
|
// ZKMY
|
||||||
|
// StartSceneLogicProcedure,
|
||||||
|
// THYZSceneLogicProcedure,
|
||||||
|
// GSJSceneLogicProcedure,
|
||||||
|
// ModelSceneLogicProcedure // 模型展示流程(此流程对应一个场景,该场景里面展示所有的模型,每个模型需要展示的时候自行调用)
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 23581277df974da1bae013af24dedd2f
|
||||||
|
timeCreated: 1712137086
|
Loading…
Reference in New Issue