刚刚到能使用的阶段,代码还没有整理,有些乱,就先不发git仓库了,等全部完善之后再发仓库的GitHub链接。
当前实现了基本的有
运行时节点树功能:
拖拽可以调整节点层级及修改父节点
节点基本属性及组件(包括系统组件)属性面板的显示及属性修改
支持大部分Creator的ValueType结构的编辑,以及常用类型 string,number和枚举的修改,包括枚举选择器(类似于编辑器中的selector),UIRender中Color的动态修改
节点的筛选功能
尝鲜的demo的项目导入到编辑器中,运行platform场景,然后通过面板中的creator-viewer打开面板
在运行场景内点击连接按钮,插件面板中能正常显示节点数据即可
demo中的版本,在 3.8.3和 3.8.7中已经测试可运行,并且测试过Android客户端局域网内可以正常查看节点信息,但还不是特别稳定,因为周五了,想好好休息下,就早点发上来,先看看反馈,如果有使用问题或者bug可以提供给我,完善之后上架插件商城,免费提供使用,并且会维护一点时间。
插件使用Vue3+ElementPlus开发,WebSocket连接,理论上可以简单修改直接在网页中运行,但是我个人是做原生App游戏的,所以为了方便自己用,就只做了远程连接的版本,后面会在游戏客户端内增加一个基础的使用面板,然后增加LogHook来实现插件中可以直接查看游戏内打印的日志和远程执行一些简单的JS代码功能,方便调试,具体看使用反馈。
如有需要在自己的项目中测试的,可以将assets中CreatorViewer.ts脚本放到自己的工程下,然后在适当的地方调用 globalInfo.bridge.connect();(如果是局域网运行,需要记得修改为启动了监听插件的ip,端口默认33000)
没有什么技术含量,多是体力活,如果有问题还请反馈,轻喷
Vue+ElementPlus渲染节点树UI仓库 要在实际使用的场景下引用此子模块(独立出来的渲染节点树的仓库,理论上支持Vue的场景下都可以使用,比如Electron,Web,浏览器插件,只需要实现对应的传输通道即可显示节点树信息,通道为一个抽象的概念,当前已经实现两种通道编辑器插件的WebSockerServer和Electron)
https://github.com/bunnya33/creator_viewer_renderer.git
Electron仓库地址 桌面端,可以脱离编辑器运行(ViewerRender作为git子模块引用)
https://github.com/bunnya33/creator_viewer_electron.git
使用方法:
git clone https://github.com/bunnya33/creator_viewer_electron.git
git submodule update --init --recursive
npm install
开发模式下可以运行 npm run dev
或者选择自己打包exe npm run dist
运行如下图,做Electron版本的想法主要是在调试Web端或者PC模拟器可以方便置顶,并且可以脱离编辑器独立运行,缺点也就是Electron的独立包会很大现在200MB起
一个3.8.7版本的示例demo包括编辑器内的插件 (ViewerRender作为git子模块引用)
https://github.com/bunnya33/creator_viewer_demo.git
暂时先放这3个仓库,后续会做一个Chrome的插件版本,用法也会类似于Electron版本
最近的版本将节点树的渲染部分独立出来,解耦了通道和UI部分,理论上可以通过不同方式将信息传递到Viewer中,都可以显示节点树信息,比如Chrome插件,可以直接在web上下文中获取节点数据,然后通过chrome api 将message 发送给插件,而并不一定非要使用WebSocket作为传输数据的通道,以便于支持各个运行平台
支持了脚本中引用的节点、组件以及Asset的信息显示,并且支持引用的节点跳转和高亮提示,代码还在整理阶段,部分逻辑有些混乱注释不完整,后续会在增加功能的同时将代码整理好,并在必要处增加注释
个人觉得自己这个插件的优点是非定时刷新,只有在选择的节点和组件属性变化时才会同步到节点树UI,不会存在太大的性能消耗,并且数据变动时刷新即时,也避免了定时刷新通过getter获取数值时getter存在某些方法被注入调用产生一些不可预知的问题。
还有一点就是插件只支持被@property装饰的属性才会显示到组件面板中,这样做是为了可以在开发时确定要显示哪些属性,避免显示全部属性查找混乱。
当前的版本还未能开箱即用,也可能存在一些bug,后续会在整体功能稳定后考虑提交插件,增加客户端使用面板(方便前端运行时自己指定连接ip和端口,防止统一局域网下多人使用冲突的问题)















