插件代码无法保存预制,求正确姿势

v2.0.5;
插件代码中,调用Editor.Ipc.sendToPanel(‘scene’, ‘scene:apply-prefab’, asset._uuid);无法保存。想在插件中对prefab进行更改操作。

        var uuid = Editor.assetdb.remote.urlToUuid('db://assets/Scene/bg.prefab');
        cc.loader.load({ type: "uuid", uuid: uuid }, function (err, asset) {

            let label = asset.data.getChildByName("lb").getComponent(cc.Label);
            label.string = "ttttt!!";
            Editor.Ipc.sendToPanel('scene', 'scene:apply-prefab', asset._uuid);
        });

不是 asset 的 uuid 喔

保存指定 Prefab:

完整代码在 https://docs.cocos.com/creator/manual/zh/getting-started/faq.html

保存当前编辑模式下的 Prefab

Editor.Ipc.sendToPanel('scene', 'scene:stash-and-save');

所以这个 node是哪里来的? asset.data.uuid 也不行?还是说必须的进行 创建 Prefab、进入 Prefab 编辑模式、保存 Prefab 三部曲?@jare

node 必须是场景里面的 prefab 节点。

不在编辑模式也行

我也没明白这个node是哪里来的,
我用Editor.Ipc.sendToAll(‘scene:enter-prefab-edit-mode’, assetUuid);进入编辑模式了,然后没明白怎么获取到当前prefab的根节点,求求知道的大佬告知一下下

理论上我需要获取到根节点,然后用基本的一些getchild,getcompent的接口可以访问的整个prefab的内容,并且修改他们,最后保存一下,这个思路没问题吧?

@jare 搞不明白啊
你们提供了 “进入 Prefab 编辑模式:” 和 “保存 Prefab:” ,结果找了半天我实在找不到怎么去修改啊,光有打开和保存我有什么用呢,怎么获取到他根节点去修改啊?

需要写场景脚本,参考 https://docs.cocos.com/creator/manual/zh/extension/scene-script.html

如果我仅仅是需要保存打开的prefab,而不做在其他scene里面这个预制体的同步,我应该如果使用呢。我的需求只是保存这个预制体文件

兄弟直接说你的需求

我的需求是这样的,a.prefab中我用代码在executeInEditMode模式下动态添加了一些节点和组件,但是这些添加的节点仅仅只是在运行时添加的,并不会保存到a.prefab,因此我需要用编辑器代码保存这个a.prefab文件。

我的需求是用脚本,打开一个prefab,遍历修改这个prefab,然后保存
打开和保存 用faq里面的 进入prefab编辑模式,保存prefab可以实现,
但是打开以后 怎么遍历,怎么修改就找不到接口了

实际上需求应该只是获取到根节点,就可以用ccfind的那些接口遍历整个prefab了吧,问题根节点怎么获取到

我更新到二楼了

嗯嗯,谢谢。刚才我看文档也找到了这个api,但是文档上面写的是保存场景,我试着用了一下可以保存。

然后还有个问题,我能不能获取到当前打开着的prefab的信息。

用场景脚本,查找节点上的 _prefab 属性,node._prefab,能查到相关信息