这个效率还不行?让你一只手^ ^【破壁】实用插件05待上线,drag-bind 编辑器内完成拖拽-绑定一条龙

drag-bind —— Cocos Creator 3.x 拖拽绑定插件

功能介绍

  • Cocos Creator 开发已经很方便了,但脚本组件属性绑定仍是一大痛点:先定义 @property、再手动把节点一个个拖进属性区。节点一多、模块一换皮,光绑定就能耗掉半天,还容易漏绑、绑错。drag-bind 就是来解决这个问题的——把"命名即绑定"变成现实,省下大量繁琐重复的低端工作,把时间留给摸鱼。

  • 拖拽即绑定:从层级管理器把节点拖进脚本组件属性区空白处,按"前缀 → 组件类型"映射自动注入 @property 并完成绑定,一次拖拽两件事全干完。

  • 右键一键批量绑定:在层级管理器右键节点,选择"手动绑定 To 脚本名",自动遍历该节点及其所有子孙节点,按前缀映射批量注入绑定;整棵子树扫完只保存一次、只触发一次编译。

  • 前缀映射可配置:内置 19 条常用映射(node→Node、tx→Label、btn→Button、sp→Sprite 等),配置面板可增删改,随时按项目习惯调整。

  • 安全注入:自动注入到脚本内的 autobind 隔离区,不碰你手写的代码;自动补 cc import、自定义类自动尝试 import、缩进与行尾(CRLF/LF)自适应,注入后代码格式干净。

  • 剪枝选项 + 豁免列表:右键批量绑定时可跳过"不可见节点 / 挂载了自定义脚本的节点"的下级,豁免列表内的脚本名(文件名或类名均可,自动互通)继续遍历,精细控制绑定范围。

  • 不影响编辑器原生拖拽:从资源管理器拖资源(如动画 → cc.Animation、图集 → cc.Sprite)完全放行,只拦截"拖节点"场景。

  • 支持 Cocos Creator 3.8.x(3.8.5 实测),开箱即用 ,简单方便 。

使用教程 - 简单

  • 绑定前的预制体:脚本组件下空空如也,属性区一片空白


  • 右键一键绑定(单脚本):节点只挂一个自定义脚本时,右键菜单直接显示"手动绑定 To 脚本名"


– 有些节点内部不想被添加(ative=fasle 或者勾选挂载自定义脚本跳过)

  • 右键一键绑定(多脚本):节点挂多个自定义脚本时,右键出现次级菜单,选择要绑定的脚本

  • 拖拽绑定主面板:使用步骤、当前生效的前缀映射、最近操作记录(成功/跳过/拒绝一目了然)

  • 前缀映射配置:增删改"前缀 → 组件类型",保存即生效

  • 其他配置:剪枝选项(不可见 / 挂载自定义脚本时跳过其下级)+ 剪枝豁免列表

问答环节

  • 拖到脚本属性区的是资源(比如拖 SpriteFrame)会被影响吗?

回答:不会。插件只拦截"层级管理器拖节点"(拖拽数据的 types 含 cc.Node),资源拖拽完全放行,编辑器原生赋值不受影响。

  • 前缀匹配规则是什么?

回答:节点名以某前缀开头 且长度大于前缀(name.length > prefix.length && name.startsWith(prefix))。例如 btn 前缀匹配 btnClose,但节点名恰好叫 btn 时不匹配,避免误绑。

  • 豁免列表填文件名还是类名?

回答:都行。插件会自动归一化匹配(去掉非字母数字字符),文件 NewComponent-001.ts 与类名 NewComponent_001 都能被豁免识别。

  • 注入的代码在哪?会不会弄乱我的脚本?

回答:所有自动注入都收敛在脚本内 //------------------------auto-bind-------------------// 标记的隔离区内,手写代码区域不会被改动;旧版标记(autobind 无尾注释)会自动迁移。属性行之间保留恰好一个空行,行尾跟随脚本原有风格(CRLF/LF)。

  • 支持的编辑器版本?

测试了 3.8.5,其他 3.8.x 版本原则上支持。

  • 需要注意什么?

回答:1. 拖拽/右键绑定前,脚本组件需先挂到节点上(绑定的是"脚本属性区");2. 前缀映射按需配置,避免前缀过短造成误匹配;3. 右键批量绑定会触发一次脚本编译,扫描节点多时请稍候;4. 配置保存在 config/autobind.json;5. 剪枝豁免列表填写的脚本名,以脚本 @ccclass('XXX') 中的类名为准(如 @ccclass('NewComponent_001') 就填 NewComponent_001)。虽然插件也支持填文件名自动归一化匹配(NewComponent-001.ts 也能识别),但同一脚本可能类名与文件名不同(连字符会被 Cocos 转下划线),多个脚本类名相近时,填 @ccclass 类名最不易混淆;

2赞

1.约定前缀拖拽进入属性面板自定义脚本, 脚本自动添加属性,并完成绑定
2.右键根节点,自动绑定子节点(孙节点等),可以配置active=false 和 绑定了自定义脚本的节点跳过绑定,自定义脚本可以添加过滤列表,比如componet-001, 除了这个脚本,其他情况照样被遍历添加到根节点上的脚本,主要是用于一些通用脚本,比如自定义的CustomButton,其中添加了音效,但是希望它被自动绑定到根节点上的脚本中,其他脚本比如 rank.ts有自己的逻辑和绑定,不想绑定到根节点. 这种勾选就比较有效了

你可以动态的加载脚本,然后在游戏中使用节点名称访问节点。

//加载脚本
let className = “脚本名”
let CtrlClass: any = js.getClassByName(className)
this.node.addComponent(CtrlClass)

//获取节点下所有的子节点(注意节点名字不能重复)
public static BindNode(n: Node) {
if (!n || !isValid(n)) return null
let UI: { [Key: string]: Node } = {}
function BIND(m: Node) {
if (m != n)
UI[m.name] = m
m.children.forEach(c => BIND©)
}
BIND(n)
return UI
}

let UI = BindNode(this.node)
UI[“节点名”].active = false

按照这种方式你就不用绑定脚本了

建议标题改成 《让你一行代码》 :rofl:

:rofl:插件很好,很棒,可惜我是老古董,还是不喜欢拖拽的方式,看的我头疼