c# - 为什么选择 UnityEvent 而不是原生 C# 事件?

标签 c# events unity3d

我的意思是,UnityEvents 比原生 C# 事件慢,而且它们仍然存储对接收器的强引用。因此,我能找到在原生 C# 事件上使用 UnityEvents 的唯一正当理由是它们与编辑器的集成。 我是不是忽略了什么

最佳答案

Am I overlooking something?

不,你没有忽略任何东西。使用 UnityEvent 的唯一优势和原因是它允许您在编辑器中使用事件。这适用于拖放人员或制作编辑器插件的人员。

UnityEvent 的另一个优点是它可以防止由于滥用委托(delegate)或使用匿名委托(delegate)与 Unity 对象而导致的 Unity 对象未被释放的问题。尽管当持有它们的主脚本被销毁时,它们会被释放。这样做的原因是因为 UnityEvent 是用弱引用实现的,因此消除/最小化了这个问题。这两件事仍然值得在原生 C# 事件上使用 UnityEvent

如果您不制作编辑器插件,您应该始终使用原生事件并委托(delegate) UnityEvent,因为它具有快速的性能和较小的内存使用量。参见 thisthis发布帖子以获取更多信息。

关于c# - 为什么选择 UnityEvent 而不是原生 C# 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44734580/

相关文章:

c# - 初学者 C# 良好实践

c# - 如何在 Spring.NET 中使用 EmailValidator?

reactjs - 将hammerjs正确添加到react js组件中

jquery - 防止click事件影响父jquery

javascript - 我可以从我的 header 触发另一个组件的功能吗?

unity3d - 欧拉角约定变换

c# - OnPointerEnter 和 OnPointerExit 未在 Unity 5.3.4 中注册

c# - 是否可以在 Page_Load 事件后调用函数?

c# - Unity3D 中是否有针对 IL2Cpp 构建的运行时代码编译的解决方案?

c# - self 跟踪实体的目的是什么?