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

我在A脚本(在节点A上)用on注册了事件监听 在B脚本(在节点B上)用emit发射事件 为什么A接收不到事件回调?我尝试在脚本A里面emit,就能够收到。on和emit只能在同一脚本内才可以吗?不可能吧!那如果实现不同节点上不同脚本之间的事件传递呢?

可以实现,前提是你的A脚本没有被注销掉

脚本没被注销掉 就是不知道为什么收不到:sweat:

on 和 emit 都是指定节点的,跟脚本应该没关系。

如果节点A进行了监听 也就是执行了on 节点B发射了事件 也就是执行了emit 那么B执行emit之后 A能收到事件吗?我现在是收不到。。。。。

原来试过emit 好像是只能在同一个节点脚本下,才可以接收到数据,用dispatchEvent,是用冒泡的方式传递事件,也只是子节点传到父节点,好像并不能传到兄弟节点,可以看一下文档这个地方,不知道记得对不对,你可以去验证一下

1赞

最好是自己去写一个事件监听,只要是有调用on监听的事件,无论在哪发送事件,都可以接受到,除非是脚本所在节点被释放掉了

那这个事件监听要如何写呢?你有代码么?

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

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

试试这个
cc.director.on

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

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

1赞

试了 不行

也不行

我发的不行么:joy:

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

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

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

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