微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Unity 中,C# 中的事件会触发但订阅者方法不会?

如何解决在 Unity 中,C# 中的事件会触发但订阅者方法不会?

我很难将触发的事件连接到另一个类中的订阅方法。这是整个设置:

首先,我得到了这个充当发布者类的类:

  public class OpenInteraction : IInteraction
  {
        public event EventHandler<bool> OpenStateChange;

        private void OnopenStateChange(bool e)
        {
            Debug.Log("open = " + e);     
            OpenStateChange?.Invoke(this,e);
        }     
  }

我有第二个类,应该是订阅者:

    public class AttachedContainer : MonoBehavIoUr
    { 
        private OpenInteraction openInteraction;

        public void Start()
        {
            Debug.Log("create OpenInteraction in AttachedContainer");
            openInteraction = new OpenInteraction();
            openInteraction.OpenStateChange += ContainerOpened;    
        }

        static void ContainerOpened(object sender,bool e)
        {
            Debug.Log("container state changed");
        }
    }

对于一些上下文,每次我在游戏中打开/关闭容器时都会触发该事件。当播放器执行此操作并且调试控制台显示消息“open = ..”时,方法 OnopenStateChange(bool e) 会被正确调用

在游戏开始时在每个 AttachedContainer 上创建一个 openInteraction,消息“在 AttachedContainer 中创建 OpenInteraction”也在此处适当记录。

但是,我从未在订阅方法中看到消息“容器状态已更改”,应该在每次关闭/打开交互时触发。

这段代码有什么问题?

解决方法

调用该事件的OpenInteraction类的实例,与Class AttachedContainer中该类的实例必须是同一个。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。