using UnityEngine;
namespace XFFSM
{
///
/// 状态基类
///
public abstract class FSMState
{
#region 字段
///
/// 状态控制器
///
public FSMController controller;
///
/// 当前状态信息
///
public FSMStateNode currentStateInfo;
///
/// 自定义数据(通过FSMController.StartupFSM()启动状态机传递自定义数据)
///
public object userData;
///
/// 上一个状态的名称
///
public string lastState;
///
/// 将要切换的下一个状态的名称(该字段仅在状态将要退出(OnExit)时有值)
///
public string nextState;
#endregion
#region 属性
public Transform transform => controller != null ? controller.transform : null;
#endregion
#region 方法
///
/// 当第一次进入该状态时调用,该方法仅调用一次(初始化相关操作推荐放该方法中)
///
public virtual void OnCreate() {
}
///
/// 当状态进入时执行
///
public virtual void OnEnter() {
}
///
/// 当状态退出时执行
///
public virtual void OnExit() { }
///
/// 每帧执行
///
public virtual void OnUpdate() { }
///
/// FixedUpdate时执行
///
public virtual void OnFixedUpdate() { }
///
/// LateUpdate时执行
///
public virtual void OnLateUpdate() {
}
#endregion
}
}