请问有没有什么方法可以监听节点世界坐标改变的?

做新手引导系统时绑定按钮节点的世界坐标,但是会因为屏幕适配导致的节点世界坐标的改动而不准,这个有什么解决方案吗?

update 里判断效率更高

3.x:TRANSFORM_CHANGED,2.x:POSITION_CHANGED

获取按钮节点坐标后,需要处理坐标系转换。可以研究一下 convertToNodeSpaceAR 和 convertToWorldSpaceAR两个方法

触发某一步引导时,如果适配导致坐标更改,延迟一帧设置引导位置

现在遇到的问题是,界面适配之后世界坐标就变了,希望能监听到世界坐标的改变

监听到世界坐标改变的目的是什么?如果最终还是为了“按钮”节点的坐标,这两个方法已经能满足你的要求了。

适配发送变化是因为屏幕尺寸发送变化了 监听这个事件就可以了,开始获取一遍按钮的位置,当这个事件触发后再获取更新一遍就可以了,注意这个事件响应后延迟2帧再去获取位置,因为cocos 为了性能 它会把好多事情集中到下一帧一起处理,所有延迟两帧最保险 下面这个是我问AI的不见得你这个版本能用,反正就是肯定会有一个监听窗口变化的事件
// 监听窗口大小变化事件
systemEvent.on(SystemEvent.EventType.RESIZE, this.onWindowResize, this);

楼主是要世界坐标

没法监听,当然update 判断是一种方法。
可以换个思路,问题原因是适配发生变化,所以可以从适配入手,看我的方法:

  1. 监听屏幕尺寸变化(不监听也行,在处理引导步骤的时候强制执行下面逻辑就好)
  2. 调用节点的widget.updateAlignment(),如果没有这个组件就一直往上级父对象找,直到找到(肯定会用到这个组件的),找到就widget.updateAlignment(),注意可以 break 掉了(子节点刷新会触发父节点的刷新,所以找到一个就可以了)
    PS:我也是做引导系统遇到这个问题的

欢迎大神提供更好、更优雅的方案

感谢,我试一下