我刚开始使用 Unity,当我看到事件系统存在并且我可以创建自定义事件时感到非常兴奋。我需要的事件是“IInventoryMessage::NewItemInInventory”,因此我继续为此创建了接口(interface),并将其设置在我的库存中。
然后是触发事件的时候了,文档让我有点震惊。
ExecuteEvents.Execute<IInventoryMessage>(target, null, (x,y)=>x.NewItemInInventory());
我的困惑是它似乎在传递 target
.
我希望 Unity 会跟踪所有具有消息接口(interface)的组件,并在执行时调用它。但是看来我必须自己传入GameObject。
我是否应该保留我想要接收消息的所有游戏对象的列表,并循环遍历它们以将它们传递到 Execute
中? ?如果我已经在遍历我知道需要调用的对象,那为什么此时还需要 EventSystem?
最佳答案
我仅在我的自定义输入系统中使用 ExecuteEvents
,在该系统中,目标始终是已知的并且是最新的(根据指针光线转换)。每当我想在发生某事时发送消息或触发操作时,我都会使用标准 C# 事件,正如 BugFinder 所说。
关于unity3d - 应该如何使用 Unity 的 ExecuteEvents.Execute?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54999697/