当前引擎版本2.0.10。其他版本不清楚。
onLoad() {
let node = new cc.Node();
node.position = cc.v2(100, 100);
this.node.addChild(node);
cc.log(node.convertToNodeSpaceAR(cc.Vec2.ZERO));
this.scheduleOnce(()=>{
cc.log(node.convertToNodeSpaceAR(cc.Vec2.ZERO));
}, 0.1);
}
在引擎中调用这段代码,会发现两次输出结果不一致。
建议大家不要在onLoad里面做与父节点相关的坐标操作。
不要在onLoad加载带有物理刚体的东西。物理刚体会调用convertToNodeSpaceAR。如果加载时间不超过一帧,就会出现坐标偏移问题。
我猜你的组件上是不是有其他改变坐标的组件,比如widget
没有,你可以复制onload函数里面的内容去测试一下
. 2.0.9 测试没问题
原因找到了,父节点加了widget组件,父节点是预制的跟节点,导致节点的初始坐标需要widget适配后才能变成预期中的值。