我一直喜欢 Unity Events 的想法。能够直接从调试器中连接东西,对设计师、快速迭代和使用方便都是很棒的。但是,使用它们在更大的项目上后,我不断遇到相同的限制:
- 方法签名受到严重限制,所以我经常不得不创建包装方法。
- 重命名方法会静默地破坏事件绑定。
- 当事件频繁触发时,性能不是理想的。
- 它很难追踪整个项目中事件的使用位置。
几年前,我开始探索自己构建事件系统的想法,主要是作为一个学习项目。随着时间的推移,它发展成为 Ramdal Events,我已经将其用作 Unity Events 的替代品,用于我的许多工作流程。一些我关注的事情是:
- 使用几乎没有签名限制的方法。
- 与零 GC 分配的委托级性能。
- 可以安全重构的方法和组件,使得重命名它们不会破坏现有的事件绑定。
- 可以追踪和验证整个项目中的事件。
- 支持几乎任何参数类型,具有可扩展的参数系统。
- 内置诊断工具,快速识别断裂的事件绑定和其他问题。
这个项目最终变得比我最初预期的大得多,我在 Unity 序列化、反射、缓存、代码生成、JIT vs. AOT 编译和 IL2CPP 等方面学到了很多。
https://assetstore.unity.com/packages/slug/341672
所有内容都是公开文档的,包括 API、逐步视频教程、示例和支持资源。如果您对实现或设计决策有任何问题,我很高兴回答。
评论 (0)