怎么实现不同节点上不同脚本之间的事件传递?

节点A要是节点B的parent,才能实现

写全局的监听可以实现归档.zip (3.1 KB)

试试这个
cc.director.on

搞个全局类,里面放一些必要的全局变量,记录需要互传消息的结点,然后 结点.emit 发送过去就行了。

cc.director.on,和cc.director.emit。

1赞

试了 不行

也不行

我发的不行么:joy:

你发的可以 不同地方使用的自定义事件对象必须是同一个 才有效

监听的对象不同,能有效么:joy:

我现在就是用的这个,应该是你姿势不对

你用的姿势不对啊,我一直都是这么用的啊

姿势不对:joy:

姿势不对:joy:我也不知道为什么不行 我现在用了楼上的自定义全局事件

cocos 的事件传递机制就是向上冒泡,意思就是只有父结点能收到子结点派发的事件.而同级或者不同层级结点之间是无法收到事件的. 这种必须要自己实现全局的事件通知广播机制.

同一个节点的事件用node注册和派发,跨节点的我通常都用cc.systemEvent去注册和派发,就是没用的时候要off掉(通常在onDestroy中off),否则会报对象为空

1赞

用一个全局的EventNode来统一处理事件监听就ok了。

cc.game.emit() 和 cc.game.on()

EventManager.zip (801 字节)
不知道你解决了没有,可以试一下这个

有个插件叫 onfire 可以实现全局派发