从 Unity 中的 c# 接口事件引用游戏对象

referencing a gameObject from a c# interface event in Unity

我在 Unity 中有一个事件管理器,可以处理从场景组件发送的事件。 类 都是从标准的 Unity 组件中抽象出来的。我成功地能够从一个按钮触发一个事件,并让该按钮的父级监听该事件(您在下面看到的 onEventReceived)。

使用 VSCode 的 Unity Debugger 扩展,我可以记录发件人。如果我键入 sender.gameObject 并且它 returns 是对发送者所附加的 GameObject 的正确引用。但是,我无法在 OnEventReceived 函数本身中引用 sender.gameObject - 因为我想它是 ISceneComponent 类型。我如何获得对被点击的发件人的游戏对象的引用?

我之前 运行 亲自处理过你的问题。

修复非常简单。

假设您创建了界面 ISceneComponent,将 gameObject 字段添加到您的界面

public interface ISceneComponent
{
    GameObject gameObject { get; set; }
    // ...
}

如果实现ISceneComponent的对象也是单体行为,gameObject会自动填充,方便引用。