42 lines
1.0 KiB
C#
42 lines
1.0 KiB
C#
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();
|
||
}
|
||
}
|
||
}
|