文档里面 Editor.Ipc.sendToAll(‘scene:enter-prefab-edit-mode’, asset.uuid); 确实可以打开预制体.但是没找到在什么位置处理打开后的预制体,目前需求一次遍历N的预制体,逐个修改预制体
1赞
可以通过 getScene 拿到场景节点遍历确认,但是我觉得可以直接通过 loadAny 加载预制体修改后直接保存,没试过哈,自己斟酌
如果不用编辑器打开预制体,更加没有找到相关接口去保存预制体.
试过用 cc.loader.load({ type: “uuid”, uuid: data.uuid }, (err, assset) => {}) 确实可以拿到相关预制体数据,也能拿到预制体里面的组件,但是修改后不知道如何保存.
试过 Editor.Ipc.sendToPanel(‘scene’, ‘scene:apply-prefab’, node.uuid);
发送消息的形式貌似得要编辑器打开了预制体,然后编辑器接受消息后,通过比较当前打开场景或预制体根节点UUID来判断是否保存.
太黑盒了 写插件真的太难了
找到解决方案了,无需编辑器打开预制体,
cc.loader.load({ type: “uuid”, uuid: data.asset.uuid }, (err, prefab) => {
// TODO 修改 prefab.data
Editor.assetdb.saveExists(data.asset.url, prefab.serialize(), function (err, meta) {
// TODO 修改完成
});
});
3赞
该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。