GithubHelp home page GithubHelp logo

potato47 / ccc-devtools Goto Github PK

View Code? Open in Web Editor NEW
993.0 33.0 314.0 10.51 MB

Cocos Creator 网页调试工具,运行时查看、修改节点树,实时更新节点属性,可视化显示缓存资源。

License: MIT License

HTML 0.72% JavaScript 4.43% EJS 13.64% Vue 53.79% TypeScript 27.43%
cocos-creator

ccc-devtools's Introduction

主干分支适用 Cocos Creator 3.4+ 版本,其他版本查看其他分支

ccc-devtools

简介

ccc-devtools 是一款用于 Cocos Creator 网页端预览的调试工具,可以实时显示场景的节点树,并对节点属性进行同步更改。

p1

使用

下载打包好的 preview-template.zip 文件(release目录下),解压到 Cocos Creator 项目目录下,刷新预览时的浏览器即可。 节点属性修改不赘述,重点介绍几个独特的小功能:

  • 输出节点、组件引用到控制台,配合调试比较常用

image

  • 标记UI节点在场景中的位置

image

  • 调试信息独立显示,再也不怕浅背景看不清 FPS 了

image

开发

项目依据文档中自定义预览模板一节进行开发,未接触过相关概念可以先阅读一下官方文档

自定义预览模板 预览支持自定义模板方便用户自定义需要的预览效果,自定义的预览模板可以放置在项目目录的 preview-template 文件夹中。或者点击编辑器主菜单中的 项目 -> 生成预览模板 就可以在项目目录下创建一个最新的预览模板。编辑器中的预览也是使用模板来注入最新的项目数据,预览时将会查找该目录下的 index 文件,如果存在就是要该文件作为预览的模板。 preview-template 文件夹的结构类似:
project-folder
|--assets
|--build
|--preview-template
    // 必须的入口文件
    |--index.ejs
    // 其他文件可根据想要实现的预览效果进行添加

本项目主要修改index.ejs,注入一段 Vue 绑定的自定义html,核心修改见下图

image

在浏览器环境中 cc 是一个全局变量,可以通过 cc.director.getScene().children 获取场景中的节点,知道这点就可以开发了,剩下的就是节点数据如何展示出来的问题了。 技术栈为 Vue3 + ElementPlus + TypeScript + Vite,熟悉前端的朋友欢迎来仓库贡献。 项目结构如下:

image

项目开发需配合本地已有的 Cocos Creator 3.x 项目,将 ccc-devtools 克隆到本地后,打开scripts/setup.js,将 projectTemplatePath 改为你的本地测试 Creator 项目路径。

image

开发流程:

  • 安装依赖 yarn

  • 修改代码

  • 构建项目 yarn build

  • 安装构建产物到项目 yarn setup

  • 刷新浏览器查看效果

插件商店版

插件版自带了一份工具代码,提供了自动安装功能。适合多个项目快速安装、卸载工具。

image

备注

ccc-devtools's People

Contributors

lihuilai avatar potato47 avatar wheatup avatar z503722728 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ccc-devtools's Issues

CocosCreator 2.4.2 获取纹理缓存时报错

问题描述

点击查看纹理缓存按钮之后报错

vue.min.js:6 TypeError: Cannot read property 'name' of undefined
at Object.cc.cache (cc-console-utils.js:137)
at wn.openCacheDialog (preview.js:152)
at He (vue.min.js:6)
at HTMLButtonElement.n (vue.min.js:6)
at HTMLButtonElement.Yr.o._wrapper (vue.min.js:6)  

原因

cocosCreator2.4.2 缓存的数据结构变动导致获取数据报错。

举例

比如下面是在版本2.4.2,获取的单个纹理的数据结构:

item: cc_EffectAsset
    isValid: true
    loaded: true
    name: "builtin-2d-graphics"
    nativeUrl: ""
    properties: null
    refCount: 2
    shaders: [{…}]
    techniques: [{…}]
    __asyncLoadAssets__: undefined
    __depends__: undefined
    _effect: Effect {_dirty: true, _name: "builtin-2d-graphics", _technique: Technique, _techniques: Array(1), _asset: cc_EffectAsset}
    _name: "builtin-2d-graphics"
    _native: ""
    _nativeAsset: undefined
    _nativeDep: undefined
    _nativeUrl: ""
    _objFlags: 0
    _ref: 2
    url: ""
    _uuid: "30682f87-9f0d-4f17-8a44-72863791461b"
    __proto__: cc_Asset
  

cc.cache = function () {
let rawCacheData = cc.loader._cache;
let cacheData = [];
let totalTextureSize = 0;
for (let k in rawCacheData) {
let item = rawCacheData[k];
if (item.type !== 'js' && item.type !== 'json') {
let itemName = '_';
let preview = '';
let content = (item.content && item.content.__classname__) ? item.content.__classname__ : item.type;
let formatSize = -1;
if (item.type === 'png' || item.type === 'jpg') {
let texture = rawCacheData[k.replace('.' + item.type, '.json')];
if (texture && texture._owner && texture._owner._name) {
itemName = texture._owner._name;
preview = texture.content.url;
}
} else {
if (item.content.name && item.content.name.length > 0) {
itemName = item.content.name;
} else if (item._owner) {
itemName = (item._owner && item._owner.name) || '_';
}
if (content === 'cc.Texture2D') {
let texture = item.content;
preview = texture.url;
let textureSize = texture.width * texture.height * ((texture._native === '.jpg' ? 3 : 4) / 1024 / 1024);
totalTextureSize += textureSize;
// sizeStr = textureSize.toFixed(3) + 'M';
formatSize = Math.round(textureSize * 1000) / 1000;
} else if (content === 'cc.SpriteFrame') {
preview = item.content._texture.url;
}

cc-console-utils.js 中的cach方法中获取的item对象:

  • content 节点
  • type 节点
    通通都都不见了 😂

测试附件📎

说明:附件是2.4.2编辑器自带的 helloworld-typescript项目
test-ccc-devtools.zip

✅ 解决方法

在这段代码后添加: if(!item.content) item.content=item;

let item = rawCacheData[k];

方法来自论坛回复

API 升级建议

let rawCacheData = cc.loader._cache;

官方文档 v2.4 资源管理模块升级指南

// 由于v2.4资源管理模块,所以获取缓存的代码,可替换成cc.assetManager来获取。

let rawCacheData = cc.assetManager.assets._map;

DevTools failed to parse SourceMap

升级到2.3.3后,在浏览器预览时所有代码会预先合成一个文件再加载。虽然提高了加载速度,但是抛异常的话无法清晰地定位。
关闭这一特性的方法时在~/.CocosCreator/profiles/features.json文件中加入如下配置:
"bundle-quick-compiler-project": false

啥时候支持下3.6,貌似报错了

Error: UI element #error .error-stack doesn't exist.
at e._queryChecked (http://localhost:7456/preview-app/ui.js:1:7508)
at new e (http://localhost:7456/preview-app/ui.js:1:1250)
at http://localhost:7456/preview-app/index.js:1:2404
at http://localhost:7456/preview-app/index.js:1:1380
at Object.next (http://localhost:7456/preview-app/index.js:1:1485)
at c (http://localhost:7456/preview-app/index.js:1:202) {stack: 'Error: UI element #error .error-stack doesn't…://localhost:7456/preview-app/index.js:1:202)', message: 'UI element #error .error-stack doesn't exist.'}

2.0.9 版本的Creator 安装后报如下错误

Error: E:\devSoftWare\Creator209\CocosCreator\resources\static\preview-templates\index.jade:38
36| div#recompiling
37| span Recompiling scripts, please wait for refresh...

38| include ./ccc-devtools/index.html
39| script(type='text/javascript' charset='utf-8' src='settings.js')
40| script(type='text/javascript' charset='utf-8' src='app/editor/static/preview-templates/modular.js')
41| script(type='text/javascript' charset='utf-8' src='app/editor/static/preview-templates/boot.js')

Invalid indentation, you can use tabs or spaces but not both
at Lexer.indent (E:\devSoftWare\Creator209\CocosCreator\resources\app.asar\node_modules\jade\lib\lexer.js:790:15)
at Lexer.next (E:\devSoftWare\Creator209\CocosCreator\resources\app.asar\node_modules\jade\lib\lexer.js:941:15)
at Lexer.lookahead (E:\devSoftWare\Creator209\CocosCreator\resources\app.asar\node_modules\jade\lib\lexer.js:113:46)
at Parser.lookahead (E:\devSoftWare\Creator209\CocosCreator\resources\app.asar\node_modules\jade\lib\parser.js:102:23)
at Parser.peek (E:\devSoftWare\Creator209\CocosCreator\resources\app.asar\node_modules\jade\lib\parser.js:79:17)
at Parser.tag (E:\devSoftWare\Creator209\CocosCreator\resources\app.asar\node_modules\jade\lib\parser.js:832:30)
at Parser.parseTag (E:\devSoftWare\Creator209\CocosCreator\resources\app.asar\node_modules\jade\lib\parser.js:759:17)
at Parser.parseExpr (E:\devSoftWare\Creator209\CocosCreator\resources\app.asar\node_modules\jade\lib\parser.js:211:21)
at Parser.block (E:\devSoftWare\Creator209\CocosCreator\resources\app.asar\node_modules\jade\lib\parser.js:729:25)
at Parser.tag (E:\devSoftWare\Creator209\CocosCreator\resources\app.asar\node_modules\jade\lib\parser.js:838:24)

在调试信息里的信息怎么不能实时更新?

cocos creator v2.2.2 版本, chrome 版本 74.0.3729.108(正式版本) (64 位)。
在creator里点击运行按钮在浏览器里运行demo,然后打开插件的调试信息面板,demo里的node 在移动,但是调试信息面板里node的位置信息不变,只有重新鼠标点击相应的node节点,位置信息才会刷新。 调试面板的自动刷新开发打开/关闭都试了,也不行。

请问这个问题怎么解决?

DevTools failed to parse SourceMap

升级到2.3.3后,在浏览器预览时所有代码会预先合成一个文件再加载。虽然提高了加载速度,但是抛异常的话无法清晰地定位。
关闭这一特性的方法时在~/.CocosCreator/profiles/features.json文件中加入如下配置:
"bundle-quick-compiler-project": false
但是浏览器却会报警告:
DevTools failed to parse SourceMap
Screen Shot 2020-04-17 at 1 02 52 PM
希望能解决下,谢谢!

Can't open button menu

When i click button and brower log error like bollow image. What can i do to fix this. Thank you!
image
image

DevTools failed to parse SourceMap

升级到2.3.3后,在浏览器预览时所有代码会预先合成一个文件再加载。虽然提高了加载速度,但是抛异常的话无法清晰地定位。
关闭这一特性的方法时在~/.CocosCreator/profiles/features.json文件中加入如下配置:
"bundle-quick-compiler-project": false
但是浏览器却会报错:

引擎键盘按键事件失效

目前处理方式: 在canvas标签里面加了tabindex属性。
如果有更好的方式解决后麻烦告知一下哈,谢谢 ^-^

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.