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

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

然后是触发事件的时候了,文档让我有点震惊。

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

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

我希望 Unity 会跟踪所有具有消息接口(interface)的组件,并在执行时调用它。但是看来我必须自己传入GameObject。

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

最佳答案

我仅在我的自定义输入系统中使用 ExecuteEvents,在该系统中,目标始终是已知的并且是最新的(根据指针光线转换)。每当我想在发生某事时发送消息或触发操作时,我都会使用标准 C# 事件,正如 BugFinder 所说。

https://stackoverflow.com/questions/54999697/

相关文章:

php - 如何使用 php 代码在 WHM/Cpanel 中以编程方式创建数据库?

ionic-framework - Ionic3 - 电子邮件编辑器 - 对象(...)不是函数

javascript - 使用 css 或 html5 的置换贴图

javascript - Discord.js 机器人,临时静音命令不会静音

android - 在自定义 Camera2 API 上显示矩形边界框(覆盖),以便仅捕获框内的图像

javascript - 使 postcss 与 material ui 的 jss 一起工作

c# - .NET Core 2 中的 Startup.cs 中的 "IConfiguration

c++ - Cmake 仅包含 header 目标来自仅 header 目标

reactjs - JEST - 如何使用同一 __test__ 文件夹中的实用程序管理不同的测试文

node.js - 如何在 Node js 中使用 Google Hangout 聊天 spaces