com.alicizax.unity.framework/Runtime/Procedure/ProcedureBase.cs

73 lines
1.3 KiB
C#
Raw Normal View History

2025-11-18 16:15:11 +08:00
namespace AlicizaX
{
public interface IProcedure
{
IProcedureModule ProcedureModule { get; set; }
void Init();
void Enter();
void Leave();
void Update();
void Destroy();
}
/// <summary>
/// 流程基类 - 使用模板方法模式定义流程生命周期
/// </summary>
public abstract class ProcedureBase : IProcedure
{
public IProcedureModule ProcedureModule { get; set; }
void IProcedure.Init()
{
OnInit();
}
void IProcedure.Enter()
{
OnEnter();
}
void IProcedure.Leave()
{
OnLeave();
}
void IProcedure.Update()
{
OnUpdate();
}
void IProcedure.Destroy()
{
OnDestroy();
}
protected virtual void OnInit()
{
}
protected virtual void OnEnter()
{
}
protected virtual void OnLeave()
{
}
protected virtual void OnUpdate()
{
}
protected virtual void OnDestroy()
{
}
protected internal void SwitchProcedure<T>() where T : ProcedureBase
{
ProcedureModule.SwitchProcedure<T>();
}
}
}