从Unity中的c#接口事件引用gameObject

时间:2018-08-15 20:24:18

标签: c# unity3d events casting gameobject

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

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

enter image description here

1 个答案:

答案 0 :(得分:1)

我自己以前曾遇到过你的问题。

修复非常简单。

假设您创建了接口ISceneComponent,请将gameObject字段添加到您的接口中

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

如果实现ISceneComponent的对象也是单一行为,那么gameObject将自动填充,您可以轻松引用它。