diff --git a/Runtime/FFW/Extension/FFSM/README.md b/Runtime/FFW/Extension/FFSM/README.md index 70e4cf60779ed8be8e1294131d4eb2035df53e00..2ca6cbd44d6f6625c8019fcd83aae66903d1a4c1 100644 --- a/Runtime/FFW/Extension/FFSM/README.md +++ b/Runtime/FFW/Extension/FFSM/README.md @@ -1,9 +1,97 @@ -FFSM FSM有限状态机模块 ------ -如果需要使用FSM的情况,如果是需要可视化调试 -推荐使用`NodeCanvas`中的FSM模块;如果无需可视化调试并且想要完全自定义的效果可使用此模块。 -更新日志: -1. 2025年1月3日13:58:04 为每个状态加入 当前状态机的引用: -+ 方便在 +# UniRx + +UniRx 是一个为 Unity 引擎设计的响应式扩展库。它基于 [.NET Reactive Extensions (Rx)](https://github.com/dotnet/reactive) 的概念,但针对 Unity 的 MonoBehaviour 和协同程序(coroutines)进行了优化。这个库提供了一种声明式的方式来处理异步数据流和事件,使得在 Unity 中进行事件驱动编程和异步操作更加直观和强大。 + +## 特性 + +- **响应式编程模型**:通过观察者模式、迭代器模式和类似 LINQ 的查询操作符,提供强大的事件处理能力。 +- **Unity 集成**:与 Unity 的生命周期和协同程序无缝集成。 +- **线程安全**:通过调度器确保在主线程安全地处理 Unity 事件。 +- **Unity 特定扩展**:为 Unity 的事件和操作提供便捷的扩展方法。 + +## 安装 + +要使用 UniRx,可以通过以下方式安装: + +- 通过 Unity 的 Package Manager 安装。 +- 从 GitHub 下载或克隆源码并在 Unity 项目中引用。 + +## 使用示例 + +下面是一些使用 UniRx 的简单示例: + +### 观察 Unity 对象的值变化 + +```csharp +var myObject = new MyObject(); +myObject.ObserveEveryValueChanged(x => x.MyProperty) + .Subscribe(value => + { + // 当 MyProperty 发生变化时执行 + Debug.Log("MyProperty changed to " + value); + }); +``` + +### 处理 WWW 请求 + +```csharp +ObservableWWW.Get("http://www.example.com") + .Subscribe( + www => Debug.Log(www.text), + error => Debug.LogError(error) + ); +``` + +### 协同程序的响应式处理 + +```csharp +Observable.FromCoroutine(observer => + MyCoroutine(observer)) + .Subscribe(x => Debug.Log("Coroutine completed with " + x)); + +IEnumerator MyCoroutine(IObserver observer) +{ + // 执行一些操作 + observer.OnNext(42); + observer.OnCompleted(); + yield return null; +} +``` + +### 使用 MainThreadDispatcher + +```csharp +SomeBackgroundTask() + .ObserveOnMainThread() + .Subscribe(result => + { + // 在主线程安全地更新 UI + myUiElement.SetText(result); + }); +``` + +## 文档 + +对于详细的文档和教程,可以查看 [UniRx 官方文档](https://github.com/neuecc/UniRx)。 + +## 示例 + +在 `Plugins/UniRx/Examples` 目录下有多个示例脚本,演示了如何使用 UniRx 的不同功能。 + +## 许可证 + +此项目依据 [MIT License](LICENSE.md) 开源。 + +## 贡献 + +如果你有兴趣为 UniRx 作出贡献,请参考 [贡献指南](CONTRIBUTING.md)。 + +## 更多信息 + +- [CHANGELOG](CHANGELOG.md) - 了解每个版本的更新内容。 + +## 支持 + +如果你在使用 UniRx 过程中遇到任何问题,可以提交 issue 到 [GitHub 仓库](https://github.com/neuecc/UniRx) 或者查看社区资源获取帮助。 \ No newline at end of file