CangJie/Assets/Scripts//StateMachineBase.cs

42 lines
1.0 KiB
C#
Raw Normal View History

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 状态模式的状态管理员基类,每一组状态的管理员都必须继承这个类
/// </summary>
public class StateMachineBase : MonoBehaviour
{
protected StateBase currentState;
protected bool isBegin = false;
/// <summary>
/// 改变状态的时候调用
/// </summary>
/// <param name="newState"></param>
public void ChangeState(StateBase newState)
{
isBegin = false;
if (currentState != null)
{
currentState.End();
}
currentState = newState;
}
/// <summary>
/// 状态的每一帧调用需要手动安排到主程序的Update中切记
/// </summary>
public void StateUpdate()
{
if (currentState != null)
{
if (!isBegin)
{
currentState.Enter();
isBegin = true;
}
currentState.StateUpdate();
}
}
}