类似于在资源管理器中双加Prefab的逻辑,如何在插件代码中调用
在商店里面 资源引用查询 的的插件,找到了这个函数,对于Prefab不适用
The asset uuid is not a scene
好像只能打开scene
可以通过发送下面的消息,打开 prefab 编辑模式。
Editor.Ipc.sendToAll('scene:enter-prefab-edit-mode', '7e977c15-ba64-4b07-8187-1bbf59fbc9fe');
对应资源的 uuid 可以通过 assetDB 获取
Editor.assetdb.queryUuidByUrl('db://assets/dead.prefab', (error, uuid) => {) });
惊现大佬
scene:open-by-uuid消息发送后,会自动选中场景下的该uuid的资源
scene:enter-prefab-edit-mode,不能像前者这样,请问怎么实现前者跳转选中的效果吗
自己通过scene-walk去查询Prefab根节点的uuid,然后发送该消息接口选中你想要的节点
Editor.Selection.select('node', uuid, !0, !0);
3q,谢谢大佬
请问打开prefab后的回调应该怎么传入,或者怎么能知道这个prefab在编辑器中已经加载完毕?
大佬,能否说详细点,我用你这个方案,只能选中场景中的节点,我想选中预制体编辑模式下的节点要怎么写啊?求教!
你是想要选中层级管理器里面的某个节点么?
是的,预制体编辑模式下的层级和场景层级好像不是同一个,我的scene-walk是怎么写的,arg传的Path,就是我要选择的节点在预制体中的路径,结果就是选择了场景层级中的节点,我想实现的是先用scene:enter-prefab-edit-mode打开预制体编辑模式,再选中层级的节点
module.exports = { 'select-node-by-path': function (event, arg) { var node = cc.find(arg); if (node) Editor.Selection.select('node', node.uuid, !0, !0); }};
教你一个办法:层级管理器面板叫做 hierarchy
如图打开devtools,搜索,会看到面板的index.js,一般面板的消息就是在messaes里面,也就是说,你可以使用这个消息,虽然官方没有公布!
从图中看到有很多消息可以使用,那么选中节点可能就是 ‘selection:activated’
那么怎么使用呢?
Editor.Ipc.sendToPanel("hierarchy","selection:activated",[uuid], callback);
至于参数,我可能写的不是很准确,但是你可以通过debug获得
@xu_yanfeng
测试发现用scene-walk去查询Prefab的子节点的uuid跟直接从层级管理器右键属性"显示节点UUID和路径"打印的uuid不一致;
而且每次打开prefab后,其子节点的uuid都会变化;通过文本编辑器打开prefab后发现cc.Node的_id属性是""(跟场景文件fire不一样,场景文件下的节点cc.Node的_id是有值的)。
所以也就没办法用这个方法选中打开的预制的子节点: Editor.Selection.select(‘node’, uuid, !0, !0);
你这个Creator的版本不一样把,为啥我这里看不到里面的代码?