This commit is contained in:
2024-10-16 00:03:41 +08:00
commit 897058435c
5033 changed files with 1009728 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
# FSMController
class in XFFSM
### 说明:
状态机控制器,可通过此类来修改状态机参数,获取当前状态等!
### 事件
| 名称 | 说明 |
| ----------- | ----------- |
| [onInitFinish](FSMController/onInitFinish.md) | 初始化完成的回调 |
| [onStateChange](FSMController/onStateChange.md) | 状态改变的回调 参数1:状态机名称 参数2:当前状态 |
### 属性
| 名称 | 说明 |
| ----------- | ----------- |
| [RuntimeFSMController](FSMController/RuntimeFSMController.md) | 当前状态机执行的状态配置文件列表 |
| Initialized | 状态机是否初始化完成 |
### 方法
| 名称 | 说明 |
| ----------- | ----------- |
| [SetBool](FSMController/SetBool.md) | 设置bool类型参数的值 |
| [SetFloat](FSMController/SetFloat.md) | 设置float类型参数的值 |
| [SetInt](FSMController/SetInt.md) | 设置Int类型参数的值 |
| [SetTrigger](FSMController/SetTrigger.md) | 触发Trigger |
| [GetBool](FSMController/GetBool.md) | 获取Bool类型参数的值 |
| [GetFloat](FSMController/GetFloat.md) | 获取Float类型参数的值 |
| [GetInt](FSMController/GetInt.md) | 获取Int类型参数的值 |
| [GetTrigger](FSMController/GetTrigger.md) | 获取Trigger类型参数的值 |
| [ResetTrigger](FSMController/ResetTrigger.md) | 还原Trigger |
| [AddRuntimeFSMController](FSMController/AddRuntimeFSMController.md) | 运行时添加并执行状态配置文件 |
| [RemoveRuntimeFSMController](FSMController/RemoveRuntimeFSMController.md) | 运行时移除状态配置文件 |
| [GetCurrentStateInfo](FSMController/GetCurrentStateInfo.md) | 获取当前正在执行的状态信息 |
| [GetCurrentTransition](FSMController/GetCurrentTransition.md) | 获取当前的状态切换信息 |
### 静态方法
| 名称 | 说明 |
| ----------- | ----------- |
| [StartupFSM](FSMController/StartupFSM.md) | 启动状态(适用于没有具体游戏物体的状态管理,例如:游戏状态) |
| [GetFSM](FSMController/GetFSM.md) | 查询通过FSMController.StartupFSM启动的状态机 |
| [RemoveFSM](FSMController/RemoveFSM.md) | 移除通过FSMController.StartupFSM启动的状态机 |

View File

@@ -0,0 +1,40 @@
# FSMController.AddRuntimeFSMController
### 方法:
public void AddRuntimeFSMController(RuntimeFSMController controller);
### 说明:
运行时添加并执行状态配置文件
### 参数
| 名称 | 说明 |
| ----------- | ----------- |
| controller | 状态配置文件 |
### 代码示例:
> ```none
>
>using UnityEngine;
>
>public class TestFSMController : MonoBehaviour
>{
> private FSMController controller;
> void Start()
> {
> controller = GetComponent<FSMController>();
> // 加载状态配置文件(这里只是示例,请根据自己的需求使用合适的方式加载)
> RuntimeFSMController fsmController = Resources.Load<RuntimeFSMController>("test_state");
> // 添加并执行状态配置
> controller.AddRuntimeFSMController(fsmController);
> }
>}
> ```

View File

@@ -0,0 +1,34 @@
# FSMController.GetBool
### 方法:
public bool GetBool(string name);
### 说明:
获取bool类型参数的值
### 参数
| 名称 | 说明 |
| ----------- | ----------- |
| name | 参数名称 |
### 代码示例:
> ```none
>
>public class TestFSMController : MonoBehaviour
>{
> private FSMController controller;
>
> void Start()
> {
> controller = GetComponent<FSMController>();
> // 获取New Bool参数的值
> controller.GetBool("New Bool");
> }
>}
>
> ```

View File

@@ -0,0 +1,61 @@
# FSMController.GetCurrentStateInfo
### 方法:
public FSMStateNode GetCurrentStateInfo(int index,string subStateName = "");
### 说明:
获取当前正在执行的状态信息
### 参数
| 名称 | 说明 |
| ----------- | ----------- |
| index | 状态配置下标 |
| subStateName | 子状态机名称,默认为空,如果不是子状态机填空即可! |
### 返回值
类型 : **FSMStateNode** [详细信息](/Documentation~/ClassApi/FSMStateNode.md)
### 代码示例:
> ```none
>
>using UnityEngine;
>
>public class TestFSMController : MonoBehaviour
>{
> private FSMController controller;
> void Start()
> {
> controller = GetComponent<FSMController>();
> // 获取下标为0的状态配置当前正在执行的状态的信息
> FSMStateNode info = controller.GetCurrentStateInfo(0);
> Debug.Log(info.data.name);
> }
>}
> ```
### 重载方法:
public FSMStateNode GetCurrentStateInfo(string controllerName,string subStateName = "");
### 说明:
获取当前正在执行的状态信息
### 参数
| 名称 | 说明 |
| ----------- | ----------- |
| controllerName | 状态配置文件名称 |
| subStateName | 子状态机名称,默认为空,如果不是子状态机填空即可! |

View File

@@ -0,0 +1,44 @@
# FSMController.GetCurrentTransition
### 方法:
public FSMTransition GetCurrentTransition(int index);
### 说明:
获取当前的状态切换信息
### 参数
| 名称 | 说明 |
| ----------- | ----------- |
| index | 状态配置下标 |
### 返回值
类型 : **FSMTransition** [详细信息](/Documentation~/ClassApi/FSMTransition.md)
### 代码示例:
> ```none
>
>using UnityEngine;
>
>public class TestFSMController : MonoBehaviour
>{
> private FSMController controller;
> void Start()
> {
> controller = GetComponent<FSMController>();
> // 获取下表为0的状态配置的状态切换的信息
> FSMTransition info = controller.GetCurrentTransition(0);
> Debug.LogFormat("开始状态:{0} 目标状态:{1}",info.Data.fromStateName,info.Data.toStateName);
> }
>}
> ```

View File

@@ -0,0 +1,39 @@
# FSMController.GetFSM
### 方法:
public static FSMController GetFSM(string fsmName);
### 说明:
查询通过FSMController.StartupFSM启动的状态机
### 参数
| 名称 | 说明 |
| ----------- | ----------- |
| fsmName | 状态机名称 |
### 返回值
类型 : **FSMController** [详细信息](/Documentation~/ClassApi/FSMController.md)
### 代码示例:
> ```none
>
>using UnityEngine;
>
>public class TestFSMController : MonoBehaviour
>{
> void Start()
> {
> // 查询GameState
> FSMController controller = FSMController.GetFSM("GameState");
> // TODO
> }
>}
> ```

View File

@@ -0,0 +1,38 @@
# FSMController.GetFloat
### 方法:
public float GetFloat(string name );
### 说明:
获取float类型参数的值
### 参数
| 名称 | 说明 |
| ----------- | ----------- |
| name | 参数名称 |
### 代码示例:
> ```none
>
>public class TestFSMController : MonoBehaviour
>{
> private FSMController controller;
>
> void Start()
> {
> controller = GetComponent<FSMController>();
> // 获取New Float参数的值
> controller.GetFloat("New Float");
> }
>}
>
> ```

View File

@@ -0,0 +1,37 @@
# FSMController.GetInt
### 方法:
public int GetInt(string name);
### 说明:
获取Int类型参数的值
### 参数
| 名称 | 说明 |
| ----------- | ----------- |
| name | 参数名称 |
### 代码示例:
> ```none
>
>public class TestFSMController : MonoBehaviour
>{
> private FSMController controller;
>
> void Start()
> {
> controller = GetComponent<FSMController>();
> // 获取New Int参数的值
> controller.GetInt("New Int");
> }
>}
>
> ```

View File

@@ -0,0 +1,35 @@
# FSMController.GetTrigger
### 方法:
public bool GetTrigger(string name);
### 说明:
获取Trigger类型参数的值
### 参数
| 名称 | 说明 |
| ----------- | ----------- |
| name | 参数名称 |
### 代码示例:
> ```none
>
>public class TestFSMController : MonoBehaviour
>{
> private FSMController controller;
>
> void Start()
> {
> controller = GetComponent<FSMController>();
> // 获取Trigger New Trigger 的值
> controller.GetTrigger("New Trigger");
> }
>}
>
> ```

View File

@@ -0,0 +1,35 @@
# FSMController.RemoveFSM
### 方法:
public static void RemoveFSM(string fsmName);
### 说明:
移除通过FSMController.StartupFSM启动的状态机
### 参数
| 名称 | 说明 |
| ----------- | ----------- |
| fsmName | 状态机名称 |
### 代码示例:
> ```none
>
>using UnityEngine;
>
>public class TestFSMController : MonoBehaviour
>{
> void Start()
> {
> // 移除状态机GameState
> FSMController.RemoveFSM("GameState");
> }
>}
> ```

View File

@@ -0,0 +1,38 @@
# FSMController.RemoveRuntimeFSMController
### 方法:
public void RemoveRuntimeFSMController(int index);
### 说明:
运行时移除状态机配置文件
### 参数
| 名称 | 说明 |
| ----------- | ----------- |
| index | 配置文件下标 |
### 代码示例:
> ```none
>
>using UnityEngine;
>
>public class TestFSMController : MonoBehaviour
>{
> private FSMController controller;
> void Start()
> {
> controller = GetComponent<FSMController>();
> // 移除状态配置
> controller.RemoveRuntimeFSMController(0);
> }
>}
> ```

View File

@@ -0,0 +1,37 @@
# FSMController.ResetTrigger
### 方法:
public void ResetTrigger(string name);
### 说明:
还原Trigger
### 参数
| 名称 | 说明 |
| ----------- | ----------- |
| name | 参数名称 |
### 代码示例:
> ```none
>
>public class TestFSMController : MonoBehaviour
>{
> private FSMController controller;
>
> void Start()
> {
> controller = GetComponent<FSMController>();
> // 还原Trigger New Trigger
> controller.ResetTrigger("New Trigger");
> }
>}
>
> ```

View File

@@ -0,0 +1,35 @@
# FSMController.RuntimeFSMController
### 属性:
public List<*RuntimeFSMController*> RuntimeFSMController;
### 说明:
当前状态机执行的状态配置文件列表
可在下图中配置:
![](textures/RuntimeFSMController.jpg)
### 代码示例:
> ```none
>
>public class TestFSMController : MonoBehaviour
>{
> private FSMController controller;
>
> // Start is called before the first frame update
> void Start()
> {
> controller = GetComponent<FSMController>();
> foreach (var item in controller.RuntimeFSMController)
> {
> Debug.LogFormat("状态配置名称:{0}", item.name);
> }
> }
>}
>
> ```

View File

@@ -0,0 +1,45 @@
# FSMController.SetBool
### 方法:
public void SetBool(string name, bool v);
### 说明:
设置bool类型参数的值
### 参数
| 名称 | 说明 |
| ----------- | ----------- |
| name | 参数名称 |
| v | 值 |
bool 类型参数:
![](textures/SetBool1.png)
![](textures/SetBool2.jpg)
### 代码示例:
> ```none
>
>public class TestFSMController : MonoBehaviour
>{
> private FSMController controller;
>
> void Start()
> {
> controller = GetComponent<FSMController>();
> // 设置New Bool参数为false
> controller.SetBool("New Bool", false);
> }
>}
>
> ```

View File

@@ -0,0 +1,45 @@
# FSMController.SetFloat
### 方法:
public void SetFloat(string name, float v);
### 说明:
设置float类型参数的值
### 参数
| 名称 | 说明 |
| ----------- | ----------- |
| name | 参数名称 |
| v | 值 |
float 类型参数:
![](textures/SetFloat1.jpg)
![](textures/SetFloat2.jpg)
### 代码示例:
> ```none
>
>public class TestFSMController : MonoBehaviour
>{
> private FSMController controller;
>
> void Start()
> {
> controller = GetComponent<FSMController>();
> // 设置New Float参数的值为1.0
> controller.SetFloat("New Float", 1.0f);
> }
>}
>
> ```

View File

@@ -0,0 +1,45 @@
# FSMController.SetInt
### 方法:
public void SetInt(string name, int v);
### 说明:
设置Int类型参数的值
### 参数
| 名称 | 说明 |
| ----------- | ----------- |
| name | 参数名称 |
| v | 值 |
int 类型参数:
![](textures/SetInt1.jpg)
![](textures/SetInt2.jpg)
### 代码示例:
> ```none
>
>public class TestFSMController : MonoBehaviour
>{
> private FSMController controller;
>
> void Start()
> {
> controller = GetComponent<FSMController>();
> // 设置New Int参数的值为1
> controller.SetInt("New Int", 1);
> }
>}
>
> ```

View File

@@ -0,0 +1,44 @@
# FSMController.SetTrigger
### 方法:
public void SetTrigger(string name);
### 说明:
触发Trigger
### 参数
| 名称 | 说明 |
| ----------- | ----------- |
| name | 参数名称 |
trigger 类型参数:
![](textures/SetTrigger1.jpg)
![](textures/SetTrigger2.jpg)
### 代码示例:
> ```none
>
>public class TestFSMController : MonoBehaviour
>{
> private FSMController controller;
>
> void Start()
> {
> controller = GetComponent<FSMController>();
> // 触发Trigger New Trigger
> controller.SetTrigger("New Trigger");
> }
>}
>
> ```

View File

@@ -0,0 +1,43 @@
# FSMController.StartupFSM
### 方法:
public static FSMController StartupFSM(string fsmName,RuntimeFSMController fsm,object userData = null);
### 说明:
启动状态(适用于没有具体游戏物体的状态管理,例如:游戏状态)
### 参数
| 名称 | 说明 |
| ----------- | ----------- |
| fsmName | 状态机名称 |
| fsm | 状态配置文件 |
| userData | 自定义参数或数据 |
### 返回值
类型 : **FSMController** [详细信息](/Documentation~/ClassApi/FSMController.md)
### 代码示例:
> ```none
>
>using UnityEngine;
>
>public class TestFSMController : MonoBehaviour
>{
> private FSMController controller;
> void Start()
> {
> // 加载状态配置文件(这里只是示例,请根据自己的需求使用合适的方式加载)
> RuntimeFSMController gameFSM = Resources.Load<RuntimeFSMController>("game_state");
> // 启动状态配置文件
> FSMController.StartupFSM("GameState",gameFSM);
> }
>}
> ```

View File

@@ -0,0 +1,35 @@
# FSMController.onInitFinish
### 事件:
public Action onInitFinish;
### 说明:
当状态机初始化完成的时候会触发该事件
### 代码示例:
> ```none
>
>public class TestFSMController : MonoBehaviour
>{
> private FSMController controller;
>
> private void Start()
> {
>
> if (!controller.Initialized)
> {
> // 状态机正在初始化中...
> controller.onInitFinish += () =>
> {
> Debug.Log("状态机初始化完成!");
> };
> }
>
> }
>}
>
> ```

View File

@@ -0,0 +1,29 @@
# FSMController.onStateChange
### 事件:
public Action onStateChange;
### 说明:
状态改变的回调 参数1:状态机名称 参数2:当前状态
### 代码示例:
> ```none
>
>public class TestFSMController : MonoBehaviour
>{
> private FSMController controller;
>
> private void Start()
> {
> controller.onStateChange += (stateMachineName,currentStateName) =>
> {
> Debug.LogFormat("状态改变 状态配置名称:{0} 当前状态名称:{1}",stateMachineName,currentStateName);
> };
> }
>}
>
> ```

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -0,0 +1,75 @@
# 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();
> }
>
>}
> ```

View File

@@ -0,0 +1,12 @@
# FSMStateNode
class in XFFSM
### 说明:
状态节点
### 字段
| 名称 | 说明 |
| ----------- | ----------- |
| data | 状态数据 |

View File

@@ -0,0 +1,20 @@
# FSMTransition
class in XFFSM
### 说明:
状态之间的过渡
### 字段
| 名称 | 说明 |
| ----------- | ----------- |
| conditions | 过渡所需的条件 |
| condition_groups | 过渡所需的新增组的条件 |
### 属性
| 名称 | 说明 |
| ----------- | ----------- |
| Data | 过渡数据 |
| ToState | 过渡目标状态 |