【包教包会】DataBoard监控一切的数据看板,这年头做游戏哪有不开挂的

​给节点挂上DataBoard组件,可以监控该节点的所有属性,包括节点脚本内的属性。

尤其适合真机调试,比控制台log更加方便、直观。

一、效果演示

动图4

二、如何获取

1、https://github.com/szrpf/DataBoard/archive/refs/heads/master.zip

2、解压,导入cocos creator(版本2.4.11),可以直接运行Demo演示

3、单独复制Demo中的DataBoard.ts文件到自己的项目代码目录!

4、自己项目中,给想要监控的节点(通常是预制体根节点)添加DataBoard组件

2
3

5、搞定!运行一下试试

动图0

三、自定义参数

1、监控节点属性

默认显示的是节点x和y,如果想监控其他属性,可以自己配置

鼠标移到“参数”上,可以查看所有参数

4

例如:节点属性angle,width,height

5
世界变换矩阵matrix

6

动图1

2、监控脚本属性

我这个节点绑定了GameHero.js脚本,所以在脚本一栏填“GameHero”

想监控水平移速speedX和状态state,自定义参数填#speedX,#state(英文逗号分隔)

注意,节点属性直接填属性名,脚本属性前面要加#(这么设计的目的是避免与节点属性重名)

之所以编辑器里仍然显示字符串,是因为我的脚本是动态绑定的,游戏运行后才能获取到属性值。

动图2

3、排版优化

每个属性之间必须用分隔符隔开,否则只会识别为普通字符

支持3种分隔符:英文逗号“,” 英文冒号“:” 空格

让我们来优化一下排版吧

8

坐标:x,y
当前状态:#state
——世界变换矩阵——
matrix
——子节点——
children

动图3

四、一键开关

DataBoard只是开发阶段调试用的,项目发布的时候要关闭。

在项目初始化的地方加一句:

9

window[‘DATABOARD’] = false;

项目运行后所有DataBoard组件会自我销毁,不产生额外开销。

想要重新打开所有DataBoard,就改回true。

五、结束语

有不明白的,或者优化建议,可以留言评论,或给我发邮件!

包教包会,你会了吗?

创作不易,请多留言讨论,这样我会有动力发更多好玩的东西上来。

GitHub地址:https://github.com/szrpf/DataBoard

EMail地址:27185709@qq.com


3.x 版本详见楼下:【包教包会】DataBoard监控一切的数据看板,这年头做游戏哪有不开挂的

24赞

火钳刘明。

收費的嗎?

下载地址:https://github.com/szrpf/DataBoard/archive/refs/heads/master.zip

好东西,mark!

还有这种操作?

每个项目不一样吧,就是把游戏的数据可视化嘛

有3.x的版本吗?

Mark!

我只能说太给力了,
在画红框的后面加一句

window['DATABOARD'] = true; // 基本设置,自己想开就开,想关就关
if (!CC_DEBUG) {
    window['DATABOARD'] = false; // 如果不是debug模式,则强制关闭DataBoard
}

可以避免生产环境忘了改参数

3.x应该也通用的,你试一下

想监控什么数据可以定义,适合任何项目

666,真机调试也可以用

mark 大佬,能挂在父节点获取子节点下的指定or多脚本 + 然后放到 滑动view里,感觉666

很实用的小东西

修改了下,放到3.x项目里了,非常好用!

赞,楼上的小哥可以分享一下 3.x 修改后的版本吗?

应大佬要求,把适配3.x的版本放出来了,我只在3.7.3测试过,理论上适配3.x,需要的伙伴自取哈
DataBoard.rar (4.6 KB)

2赞

我整了个3.7.3的工程,没跑起来,能不能传个完整工程上来 :rofl:
另外想探讨下编程理念的问题,你的getOrAddComponet(吐槽下单词拼错)
作用是获取组件时,如果没有就先添加再获取。
这样看起来代码健壮了(学校里老师是这么说的),但你会错过有价值的信息。
因为要获取的组件不存在,这肯定是前面的代码哪里出了问题,他报错了你才能及时发现并且处理掉。
同样道理,大部分函数都不建议做非法参数的处理,除非是服务端传过来的数据,或者其他不是你自己产生的数据。

DataBoardTest.rar (3.6 MB) getOrAddComponent不是替代getComponent的,是明确需要这个组件时调用的,我新建了工程测试了下是正常的

1赞