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();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|