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

标签 unity3d

我刚开始使用 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/

相关文章:

c# - 通过 Unity 中的脚本更改作为 2D Sprite 子项的 TextMeshPro 文本

c# - Kinect 和 Unity3D : Mapping Kinect Joints with 3D model

c# - 我可以在 Visual Studio/Code 中测试/运行 Unity C# 吗?

unity3d - MainCamera 的背景(Unity C#)

c# - 如何在 Unity3D 项目上启用 C# 7 功能

unity3d - UCE0001 : ';' expected. Insert a semicolon at the end

android - 在Android Studio中构建统一项目(具有Firebase)时出错

c# - 为什么 MS access odbc 在 C# 中返回数字而不返回字符串?

c# - unity 类型 'TitleAnimScript'与类型 'TitleAnimScript'冲突

c# - Unity 处理多个具有不同目的的碰撞器