我的意思是,UnityEvents比本地C#事件要慢,并且它们仍然存储着对接收器的强大引用。因此,我发现在本机C#事件上使用UnityEvent的唯一有效理由是它们与编辑器的集成。我在俯视什么吗?

最佳答案



不,您没有忽略任何东西。使用UnityEvent的唯一优点和原因是,它允许您在编辑器中使用事件。适用于拖放人员或制作Editor插件的人员。
UnityEvent的另一个优点是,它可以防止由于滥用委托(delegate)或将匿名委托(delegate)与Unity Objects一起使用而导致Unity Object无法释放的问题。尽管当持有它们的主脚本被破坏时它们被释放了。这样做的原因是因为UnityEvent是用弱引用实现的,因此可以消除/最小化此问题。仍然值得在不使用原生C#事件上使用UnityEvent的情况下,这两件事仍然是而不是

如果您不制作Editor插件,则应始终使用本机事件并通过UnityEvent进行委托(delegate),这是因为该插件性能快且占用内存少。有关更多信息,请参见thisthis发布。

07-24 12:37