如题。
想把某个目录下的scene全部导出到另一个目录下生成prefab,如何实现?一次次手动在编辑器上拖太麻烦了。Creator有命令行工具么?
我只知道能跟用拖曳的
雖然不是很清楚
但是如果許多節點都需要做成預制
這些節點為何不包起來成一個節點變成預制體呢?
你可以编写一个插件实现你要的功能
在资源管理器里面生成prefab的api为:
Editor.Ipc.sendToPanel('scene', 'scene:create-prefab', node.uuid, 'db://assets/xxx/xxx.prefab');
然后node.uuid参数可以通过2中方式获取
- 通过scene-walk脚本获取
'get-prefab-root-info'(event, data) {
let ret = null;
let scene = cc.director.getScene().getChildren();
let prefabNode = scene[0];
if (prefabNode) {
// prefabNode 就是场景编辑器中的预制根节点
let uuid = prefabNode.uuid;
ret = uuid;
// 之后的逻辑就可以像编写游戏代码一样随便获取prefab node的各种信息
var node = cc.engine.getInstanceById(uuid);
}
if (event.reply) {
event.reply(null, ret);
}
}
- 通过场景编辑器获取正在选择的node
Editor.Selection.curSelection('node');// 获取的是多选的节点
Editor.Selection.curActivate('node');// 获取的是当前激活的节点
祝你好运!
hi 创建一个预制体出现了问题,版本2.4.4
代码:
var uuids = Editor.Selection.curActivate(‘node’);
Editor.Ipc.sendToPanel(‘scene’, ‘scene:create-prefab’, uuids, “db://assets/test.prefab”);
log:
-
Failed to create asset db://assets/test.prefab/Canvas.prefab, messages: Error: Parent path /Users/xxx/xxx/xxx/assets//test.prefab is not exists
-
Failed to create prefab db://assets/test.prefab/Canvas.prefab, messages: Error: Parent path /Users/xxx/xxx/xxx/assets/test.prefab is not exists
-
[object Object]
但是
var uuids = Editor.Selection.curActivate('node');
Editor.Ipc.sendToPanel('scene', 'scene:create-prefab', uuids, "db://assets");
成功了,看来不能指定perfab的名字,而是一个路径 ?
看样子是的
且必须打开要创建prefab的节点的所在的场景。
open-by-uuid打开了场景但是没有找到对应的回调 , open-by-uuid后直接create-prefab的话不行。ccc的拓展有些麻烦, 这样可能会导致生态发展的慢一点吧 。
自信点,把可能去掉
