feat: 修复节点变换属性竞态问题,扩展完整属性支持,增强获取数据工具

- fix: 将 update-node-transform 中 scaleX/scaleY 从异步 IPC 改为直接赋值,修复设置不生效
- fix: 将 color 从异步 IPC 改为直接赋值 (node.color = new cc.Color().fromHEX(color))
- feat: update_node_transform 新增 rotation/anchorX/anchorY/opacity/skewX/skewY 参数
- feat: get_scene_hierarchy includeDetails 新增 rotation/anchor/color/opacity/skew/group 返回
- feat: callSceneScriptWithTimeout 对 panel not found 错误返回友好中文提示
- docs: 更新 UPDATE_LOG.md/注意事项.md/project-rules.md 反映所有修改
This commit is contained in:
火焰库拉
2026-03-01 12:18:02 +08:00
parent a618497028
commit 77aba8e7f3
5 changed files with 153 additions and 108 deletions

View File

@@ -89,7 +89,18 @@ function callSceneScriptWithTimeout(pluginName, method, args, callback, timeout
if (!settled) {
settled = true;
clearTimeout(timer);
callback(err, result);
// 友好化处理 Scene 面板未就绪的错误(如插件重载、场景切换期间)
if (err && typeof err === "object" && err.message && err.message.includes("panel not found")) {
const friendlyMsg = `场景面板尚未就绪(可能正在重载插件或切换场景),请等待几秒后重试。原始信息: ${err.message}`;
addLog("warn", `[scene-script] ${friendlyMsg}`);
callback(friendlyMsg);
} else if (err && typeof err === "string" && err.includes("panel not found")) {
const friendlyMsg = `场景面板尚未就绪(可能正在重载插件或切换场景),请等待几秒后重试。原始信息: ${err}`;
addLog("warn", `[scene-script] ${friendlyMsg}`);
callback(friendlyMsg);
} else {
callback(err, result);
}
}
};
@@ -286,11 +297,17 @@ const getToolsList = () => {
id: { type: "string", description: "节点 UUID" },
x: { type: "number" },
y: { type: "number" },
rotation: { type: "number", description: "旋转角度" },
width: { type: "number" },
height: { type: "number" },
scaleX: { type: "number" },
scaleY: { type: "number" },
anchorX: { type: "number", description: "锚点 X (0~1)" },
anchorY: { type: "number", description: "锚点 Y (0~1)" },
color: { type: "string", description: "HEX 颜色代码如 #FF0000" },
opacity: { type: "number", description: "透明度 (0~255)" },
skewX: { type: "number", description: "倾斜 X" },
skewY: { type: "number", description: "倾斜 Y" },
},
required: ["id"],
},