vscode函数跳转插件_人生苦短,我们为 Cocos Creator 开发的插件和工具

在使用 Cocos Creator 开发项目的过程中,为了提高开发效率我们开发了很多扩展插件,本文介绍常用的几款,抛砖引玉,希望给大家带来帮助。

32cdfd103e36d60e7f67ebe6a26e6e71.png
腾讯开心鼠英语

网页扩展:运行时查看场景节点树

Cocos Creator 本地项目通常会在 Chrome 上调试运行,借助 Chrome 强大的开发者工具,我们可以对网页的性能、网络、脚本逻辑等进行调试优化。然而对于游戏来说,场景中的节点组件信息并没有办法直观的获取和修改,无法快速定位问题。为了解决这个痛点,我们可以修改 Cocos Creator 预览时的网页模版,让其显示更多的场景信息。

下面是修改过后的预览游戏界面

97e655a1cf0f152a8a43b32015d90a0d.gif

扩展了如下功能:

  • 场景节点树实时显示,节点、组件属性实时显示更改
  • 可视化缓存资源
  • 标记场景中节点位置
  • 输出节点、组件引用到控制台

源码:

https://github.com/potato47/ccc-devtools

此页面使用了 vue + vuetify 开发,对于单页面应用来说 vue 是非常好的选择,大家也可以基于这种方式来定制自己项目的预览界面。

VS Code 扩展:JavaScript 代码支持函数跳转

Cocos Creator 支持 JavaScript 和 TypeScript 两种语言,如果你是用 VS Code 来开发 Cocos Creator 的 js 项目,那你的编程体验应该不是很好,因为 Cocos Creator 的组件脚本是一套自定义的结构,

const mylog = require('mylog');

cc.Class({
  properties: {
    node1: cc.Node,
    node2: cc.Node,
    label1: cc.Label,
    label2: cc.Label,
  },

  start: function() {
    this.method1();
  },

  method1: function() {
    console.log('method1');
  },

  method2: function() {
    console.log('method2');
  },
});

在这个结构下,VS Code 不能识别 this,当你在 start 方法里输入 this. 的时候无法准确的获得可以访问的属性和方法,也无法通过点击方法名或者模块名来跳转到定义位置。

好在 VS Code 有丰富的扩展 API,通过学习文档[1],我们开发出了一款让 js 代码支持函数跳转,属性提示的插件。大家可以在 VS Code 插件商店里搜索 “Cocos Creator JS“ 来下载使用。

96a0eb69a8c3d52e2a0a052691b908da.png

下面是预览效果:

  • js代码支持函数跳转
21957e31561e95a84de004ae74b34300.gif
  • js代码提示
654f64f5754091c801f6d059cc58f6ba.gif
  • 模块跳转
f84570f386c97936691e3a844e7f067f.gif

源码:

https://github.com/potato47/vscode-cocos-creator-js

编辑器扩展:微信小游戏子包依赖检查

得益于 Cocos Creator 优秀的跨平台能力,我们的项目上线了 Android、iOS、Web 和微信小游戏平台。由于微信平台对代码包大小有限制,在上线微信小游戏时我们使用了代码分包功能,但是项目开发过程中有些模块互相耦合,导致分包后主包与子包或者子包之间有依赖,在被依赖包加载前就对其进行导入会导致程序出错。为了解决这个问题我们开发了一款 Creator 插件,可以对子包依赖自动检测。效果如下:

8eb48a552cc781fef1190d957532f396.png

点击检查依赖按钮后,插件会自动检查所有子包间的依赖,并可视化的显示出来,点击文件名定位到脚本位置,根据修改建议修改即可。

源码:

https://github.com/potato47/wx-subpackage-helper

编辑器扩展:快速打开场景

在使用 Cocos Creator 编辑器过程中个人体验最不好的就是资源管理器里的搜索功能了,在 1.x 版本搜索资源时每输入一个字母都会调用一次全局过滤资源的函数,输入过程中就会感觉到持续的卡顿,在 2.x 版本稍微优化了一下体验,改为敲回车再执行过滤函数,但在资源繁多的项目里搜索依然会卡顿。为了解决这个不大但影响心情的问题,我们开发了一款搜索插件,可以快速搜索打开场景或者预制体资源。无需等待,无需鼠标。

4620d1dc534b11439f0b77d5f5e5df02.gif

源码:

https://github.com/potato47/cocos-creator-quick-open-x

控制台扩展:控制台查看节点树,节点属性

通过 Chrome 的开发者工具我们可以直接对原生平台中 Cocos Creator 的 JavaScript 代码进行远程调试,但一些 UI 相关问题依然不好定位,如果能在控制台里查看节点树就会方便很多。

首先介绍一下 console.groupconsole.groupEnd 这两个函数,它们可以组成一个可以折叠的标签,用于将输出信息分组,console.group 默认展开,相应的还有一个 console.groupCollapsed 默认折叠,显然我们可以用它们输出树形结构。

function tree(node = cc.director.getScene()) {
    let style = `color: ${node.parent === null || node.activeInHierarchy ? 'green' : 'grey'};`;
    if (node.childrenCount > 0) {
        console.groupCollapsed(`%c${node.name}`, style);
        node.children.forEach(child => tree(child));
        console.groupEnd();
    } else {
        console.log(`%c${node.name}`, style);
    }
}

将上述代码粘贴到控制台,然后输入 tree(), 就可以查看当前场景的节点树结构了。

c91fad1fb7704b0e105ca989bf9f1fe7.png

上面的功能还很简陋,经过扩展我们可以获得更多的功能

9fd4d600fc922d7afcd6d224f5d32a35.png

每个节点后边会附带常见的几个属性和唯一id,通过 cc.cat(id) 即可获得这个节点的引用,提高调试效率。

源码:

https://github.com/potato47/ccc-devtools/blob/master/libs/js/cc-console-utils.js

适用于 Cocos 的 JSC 加解密工具

Cocos Creator 在构建的时候支持对脚本进行加密和压缩。

4ed27e0180c058b92568ae6661c0b1f3.png

然而,官方并没有提供一个解压和解密的工具。这给 jsc 的二次修改和重用带来了不便。

本工具弥补了这个不足:提供了与 Cocos Creator 相同的加密、解密、压缩、解压的方法。可以很方便地对构建得到的 jsc 进行解密、解压得到 js ,也可以将 js 压缩、加密回 jsc 。

源码:

https://github.com/OEDx/cocos-jsc-endecryptor

参考

  • Cocos Creator 扩展编辑器文档[2]
  • Cocos Creator 自定义网页预览文档[3]
  • VS Code 插件开发文档[4]

参考资料

[1]

文档: https://code.visualstudio.com/api/language-extensions/programmatic-language-features

[2]

Cocos Creator 扩展编辑器文档: https://docs.cocos.com/creator/manual/zh/extension/

[3]

Cocos Creator 自定义网页预览文档: https://docs.cocos.com/creator/manual/zh/advanced-topics/custom-preview-template.html

[4]

VS Code 插件开发文档: https://code.visualstudio.com/api/get-started/your-first-extension

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/298049.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQLSERVER 日志收缩

SQL2008 的收缩日志 由于SQL2008对文件和日志管理进行了优化,所以以下语句在SQL2005中可以运行但在SQL2008中已经被取消:(SQL2005)BackupLog DNName with no_loggodumptransaction DNName with no_loggoUSE DNName DBCC SHRINKFILE (2)Go---------------…

解决win7“该文件没有与之关联的程序来执行该操作”

机器装好了win7系统。右击“计算机”管理的时候,出现“该文件没有与之关联的程序来执行该操作”能是因为删除了start menu下的某个文件,经过分析,找到了如下的解决方法:定位到注册表HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Manage\c…

绝不能放进微波炉的10样东西,最后一个太意外

全世界只有3.14 % 的人关注了爆炸吧知识前一阵,网上有一段用微波炉加热葡萄的视频,成了新闻热点。研究员在实验中发现,两颗葡萄放进微波炉后,竟然会产生电弧。图片来源网络之前小编加热汉堡的时候,本来想大快朵颐一顿&…

在 .NET 6 中使用 DATEONLY 和 TIMEONLY

在 .NET 6 中使用 DATEONLY 和 TIMEONLY在 即将发布的.NET 6中,引入了两种期待已久的类型作为核心库的一部分。DateOnly和TimeOnly允许开发人员表示 DateTime 的日期或时间部分。这两种新类型是结构体(值类型),可以在您的代码独立…

vue 3.0 正式版_Vuejs 3 Release:One Piece. Vuejs 3.0 正式版发布!代号:海贼王

Vuejs 3.0 在北京时间2020年9月19日凌晨,终于发布了 3.0 版本,代号:One Piece。此次vue3.0 为用户提供了全新的 composition-api 以及更小的包大小,和更好的 TypeScript 支持。Vue3.0发布链接​github.comVue 是当前非常流行的框架…

Linux IPC实践(6) --System V消息队列(3)

消息队列综合案例 消息队列实现回射客户/服务器 server进程接收时, 指定msgtyp为0, 从队首不断接收消息 server进程发送时, 将mtype指定为接收到的client进程的pid client进程发送的时候, mtype指定为自己进程的pid client进程接收时, 需要将msgtyp指定为自己进程的pid, 只接收…

100斤的铁和100斤女生哪个重?

1 你是不是有别的猫了?-2 兔兔这么可爱我们沾点孜然再吃会更香3 解压的最好方式4 人不如猫系列5 这演技没sei了!!!6 100斤的铁和100斤女生哪个重?7 如果只能选一个,你会选什么你点的每个赞&#xff…

JailbreakMe.com-最新浏览器模式破解iPhones,iPads和iPod Touches方法

一位***建立了该网站(JailbreakMe.com),可以通过浏览器登录的形式破解几乎所有的iOS,这包括了iPhone,iPad,和iPod Touch,将解除Apple对这些设备的软件限制。 用户如果想尝试未经授权的app或者想在多个不同国家使用这些设备,都可以…

谷歌开源3D舞蹈生成模型FACT,舞姿清奇!

文 | 御坂弟弟出品 | OSC开源社区(ID:oschina2013)谷歌开源了其基于 AIST 的 3D 舞蹈生成模型 FACT。该模型不仅可以学习音乐-运动对应关系,还可以生成以音乐为基础的 3D 运动序列。此前,谷歌层发布了大规模的多模态 3…

vue click事件_vue指令用法

vue指令指令式带有 v- 前缀的特殊特性v-text和v-html都属于指令将数据和dom做关联&#xff0c;当表达式的值改变时&#xff0c;响应式地作用在视图解决大胡子语法闪烁案例[v-cloak] {dispaly: none; }一般把v-cloak绑在Vue实例el属性绑定的节点上<!DOCTYPE html> <htm…

冒泡排序c java c,冒泡排序,c语言冒泡排序法代码

冒泡排序&#xff0c;c语言冒泡排序法代码冒泡排序冒泡排序(Bubble Sort)&#xff0c;是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列&#xff0c;依次比较两个相邻的元素&#xff0c;如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元…

男人从小到大的梦想

1 哪个男孩子不想拥有挖掘机呢2 竟然还有这种操作&#xff1f;&#xff1f;&#xff1f;3 这难道是传说中的好冷鸭 哈哈哈4 这些。。都是我的吗&#xff1f;&#xff1f;&#xff01;&#xff01;5 流浪的小可爱被收养之后&#xff0c;终于可以睡个安稳觉了&#xff01;6 好好的…

10个人里有几个大学生?

大家好&#xff0c;我是Z哥。昨天看了一份报告&#xff0c;感触特别深&#xff0c;想随便聊几句。留给未来作为父亲时的自己。前几天教育部发布了 2020 年的《教育发展统计公报》&#xff0c;看着里面的一张张图表&#xff0c;不由得感叹一句&#xff0c;“读书这事真的是快内卷…

win2003无法进入桌面_救急,如何通过命令行备份桌面重要文件?

今天要说的问题&#xff0c;日常使用中还蛮常见的&#xff0c;比如出现紧急:近期系统更新后进不了系统的一定要看!中类似的情况。对于具有U盘启动盘的朋友们来说&#xff0c;这不是事&#xff0c;因为我们可以通过U盘启动进PE来备份数据&#xff0c;但是日常中&#xff0c;大部…

操作系统概念 ppt_智能家居操作系统三国拉锯,要出结果了吗?

海尔、百度、华为盘踞的智能家居操作系统&#xff0c;谁拿下传统家电企业了&#xff1f;文/郭锴来源/智能相对论(aixdlun)福特曾说&#xff0c;如果你问消费者他们想要什么&#xff0c;得到的答案只会是一匹更快的马。汽车大王福特给消费者了汽车&#xff0c;手机教父乔布斯拿出…

垃圾站

http://www.heiqu.com/

史上超强的学科碰撞,有生之年必看系列!

▲ 点击查看 马云在一次演讲中&#xff0c;说过这样一段话&#xff1a;现今社会&#xff0c;如果我们继续以前的教学方法对我们的孩子进行记、背、算这些东西&#xff0c;不让孩子去体验&#xff0c;去玩&#xff0c;不让他们去尝试琴棋书画。我可以保证&#xff1a;三十年后孩…

使用zipKin构建NetCore分布式链路跟踪

本文主要讲解使用ZipKin构建NetCore分布式链路跟踪场景因为最近公司业务量增加&#xff0c;而项目也需要增大部署数量&#xff0c;K8S中Pod基本都扩容了一倍&#xff0c;新增了若干物理机&#xff0c;部分物理机网络通信存在问题&#xff0c;导致部分请求打入有问题的物理机时总…

微信又添新功能!这个微信群可以学英语,而且全程免费

全世界只有3.14 % 的人关注了爆炸吧知识最近不少网友发现&#xff0c;在微信群里居然可以学英语&#xff01;而且全程免费&#xff01;群里面会有免费的英语直播课&#xff0c;免费的课程资料&#xff0c;还有专业的英语老师辅导学习。 更重要的是&#xff0c;不需要集赞&#…

C# winform 窗体接收命令行参数自动登录进行系统,模拟600个WCF客户端的并发压力测试...

我们想要达到的目的是模拟&#xff16;&#xff10;&#xff10;个客户端的消息提醒功能&#xff0c;当然我们没有&#xff16;&#xff10;&#xff10;个电脑可以拿来测试&#xff0c;我们只有&#xff14;&#xff0d;&#xff15;台电脑可以用来测试&#xff0c;那我们就想…