我只是从Unity开始,当我看到事件系统存在并且我可以创建自定义事件时,我非常兴奋。我需要的事件是“ IInventoryMessage :: NewItemInInventory”,因此我继续为此创建了接口,并将其设置在我的库存中。
然后是时候触发该事件了,文档使我有些沮丧。
ExecuteEvents.Execute<IInventoryMessage>(target, null, (x,y)=>x.NewItemInInventory());
我的困惑是它似乎正在传递target
。
我希望Unity能够通过消息的界面跟踪所有组件,并在消息执行时调用它。但是似乎我必须自己传递GameObject。
是否应该保留要接收消息的所有GameObject的列表,并循环遍历它们以将它们传递到Execute
中?如果我已经遍历了我知道需要调用的对象,那为什么在那时需要EventSystem?
答案 0 :(得分:0)
我仅在我的自定义输入系统中使用self.assertFieldOutput(
EmailField,
{'a@a.com': 'a@a.com'}, # valid email
{'aaa': ['Enter a valid email address.']} # invalid email; results in validation error
)
,该目标始终是已知的目标并且是最新的(根据指针raycast)。每当我想发送消息或发生某事时触发操作时,我都会使用标准的C#事件,如BugFinder所说。