Files
taptap2024_GJ_chidouren/Packages/com.xfkj.xffsm@357f537fea/Documentation~/ClassApi/FSMState.md
2024-10-16 00:03:41 +08:00

76 lines
1.7 KiB
Markdown

# FSMState
class in XFFSM
### 说明:
状态基类
### 字段
| 名称 | 说明 |
| ----------- | ----------- |
| controller | 状态控制器 |
| currentStateInfo | 当前状态信息 |
| userData | 自定义数据(通过FSMController.StartupFSM()启动状态机传递自定义数据) |
| lastState | 上一个状态的名称 |
| nextState | 将要切换的下一个状态的名称(该字段仅在状态将要退出(OnExit)时有值) |
### 属性
| transform | 状态控制器所在的Transform |
### 方法
| 名称 | 说明 |
| ----------- | ----------- |
| OnCreate| 当第一次进入该状态时调用,该方法仅调用一次(初始化相关操作推荐放该方法中) |
| OnEnter| 当状态进入时执行 |
| OnExit| 当状态退出时执行 |
| OnUpdate| 每帧执行 |
| OnFixedUpdate| FixedUpdate时执行 |
| OnLateUpdate| LateUpdate时执行 |
### 代码示例
> ```none
>
>using UnityEngine;
>
>public class TestState1 : FSMState
>{
> private Player player;
> public override void OnEnter()
> {
> base.OnEnter();
> // 可以通过controller访问该游戏物体身上的其他组件,执行逻辑
> // Transform transform = controller.GetComponent<Transform>();
> }
>
> public override void OnExit()
> {
> base.OnExit();
> }
>
> public override void OnUpdate()
> {
> base.OnUpdate();
> if (player == null)
> player = controller.GetComponent<Player>();
> player.Rotate();
> }
>
> public override void OnFixedUpdate()
> {
> base.OnFixedUpdate();
> }
>
> public override void OnLateUpdate()
> {
> base.OnLateUpdate();
> }
>
>}
> ```