想做个快捷生成脚本的creator插件,但缺少相关文档

插件需要是:

  1. 点击层级管理器选中节点后
  2. 再按快捷键直接在指定位置生成该节点同名js文件
  3. 并且将这js文件直接和这节点绑定,同时外部打开该js文件进行编辑
    目的只是减少写界面代码所需繁琐操作: 打开 资源管理->生成文件->想名字->找模板->打开编辑器编辑代码;
    这样为每个节点创建代码文件就没有什么顾虑,减少繁琐;

想问的是:
1.怎么creator api 查找层级管理器选中了哪些节点?
2.怎么用 creator api 给指定节点绑定上脚本?
麻烦下大佬

4赞

1.怎么creator api 查找层级管理器选中了哪些节点?

可以通过该函数 Editor.Selection.curSelection(‘node’); 得到一个 uuid 的数组,然后可以通 cc.engine.getInstanceById(uuid) 获取到节点的信息

2.怎么用 creator api 给指定节点绑定上脚本?

通过上面的 cc.engine.getInstanceById(uuid) 得到了节点,然后通过 addComponent 进行添加

范例:
// 指定节点添加组件
var node = cc.engine.getInstanceById(Editor.Selection.curSelection(‘node’)[0]);
node.addComponent(cc.Button);

// 指定节点创建新的子节点
var newNode = new cc.Node(‘new node’);
newNode.parent = cc.engine.getInstanceById(Editor.Selection.curSelection(‘node’)[0])

附加,

创建新脚本资源

Editor.Ipc.sendToPanel(‘assets’, ‘assets:new-asset’, { name: ‘NewScript.js’, url: ‘unpack://static/template/new-script.js’})

打开脚本

Editor.Ipc.sendToMain(‘assets:open-text-file’, uuid);

7赞

感谢大佬的一条龙服务:kissing_smiling_eyes:

如果每个大佬都像你一样 论坛将是多么美好

1赞

大佬,再问下怎么获取当前编辑中的预制节点的文件路径?

大佬太棒了~

可以用 uuid 去转 url 或者 path

渲染层:
Editor.assetdb.remote.uuidToFspath(uuid);
Editor.assetdb.remote.uuidToUrl(uuid);

主进程:
Editor.assetdb.uuidToFspath(uuid);
Editor.assetdb.uuidToUrl(uuid);

1赞

谢谢大佬回复, 我通过这样操作的uuid转换不了URL路径,有劳大佬指教

这个 uuid 是压缩过的,而且这个转换只支持资源的 uuid,节点的 uuid 不需要吧?

cc.find 是用于 node,不是资源

请教如何取得当前打开 prefab节点对应的 资源uuid
我需求其实就是:
打开prefab节点后按下快捷键就在对应的 prefab文件旁边生新建js文件

如果是 prefab 的话,可以通过 cc.find(‘New Node’)._prefab.asset._uuid 去获取,普通的节点就没办法了

我的是1.9.1版本,获取不了只能另外想办法了

感谢大佬一路的支持啊

爱死你了:+1:

大佬 获取一个精灵 资源对应的assets目录下的路径 改怎么搞。。。。
难道普通节点真的一点办法都没有吗?

估计是这样
let uuid = node.getComponent(cc.Sprite).spriteFrame._uuid
Editor.remote.assetdb.uuidToFspath(uuid);



简单的测试了一下 咋没成功呢

卡在 获取不到精灵引用的assets资源路径 还有 当前引用的spriteframe在哪个plist中
如图: 怎么获取当前精灵引用的资源是 assets/Texture/lalala 下的role_d_0.plist中的scenes-words-0013-layou-play_new-role-role_a-role_a_pao.png 这个资源

let uuid = node.getComponent(cc.Sprite).spriteFrame._uuid
let path = Editor.remote.assetdb.uuidToFspath(uuid);

path == assets/resources/bgs.plist/pk_1_10.png

牛B 大佬 我查了太多api了 非常感谢