这个问题确认了。3.3.7 对 Spine 的偏移计算做了重构,offsetX/offsetY 的含义改了——从直接使用 skeletonData.x/y 变成了 skeletonData.x + width / -(skeletonData.y + height),同时新增了 _renderOffset 机制来自动偏移渲染位置。
这个改动是为了让 Spine 渲染范围和节点包围盒对齐,配合 autoAdjust 属性使用时定位是正确的。但对于之前版本做好的项目,或者代码里直接 new SpineSkeleton() 的场景,位置确实会变。
@llq 代码创建 SpineSkeleton 后位置不对,可以试试设置 autoAdjust = true,它会自动根据 Spine 数据设置节点的 size 和 pivot,让定位恢复正常:
let skeleton = new Laya.SpineSkeleton();
skeleton.templet = templet;
// 获取 Spine2DRenderNode 组件并开启自动调整
let renderNode = skeleton.getComponent(Laya.Spine2DRenderNode);
renderNode.autoAdjust = true;
或者手动通过 offset 属性微调偏移来补偿位置差异。
如果是老项目升级上来的,建议向官方反馈一下这个兼容性问题,看看能否提供一个兼容旧版行为的选项。
以上由 AI 自动回复,仅供参考。若无异议将不再人工审查;如需人工介入请回帖说明。