应该如何使用Unity的ExecuteEvents.Execute?

时间:2019-03-05 09:41:16

标签: unity3d

我只是从Unity开始,当我看到事件系统存在并且我可以创建自定义事件时,我非常兴奋。我需要的事件是“ IInventoryMessage :: NewItemInInventory”,因此我继续为此创建了接口,并将其设置在我的库存中。

然后是时候触发该事件了,文档使我有些沮丧。

ExecuteEvents.Execute<IInventoryMessage>(target, null, (x,y)=>x.NewItemInInventory());

我的困惑是它似乎正在传递target

我希望Unity能够通过消息的界面跟踪所有组件,并在消息执行时调用它。但是似乎我必须自己传递GameObject。

是否应该保留要接收消息的所有GameObject的列表,并循环遍历它们以将它们传递到Execute中?如果我已经遍历了我知道需要调用的对象,那为什么在那时需要EventSystem?

1 个答案:

答案 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所说。