最近使用 CocosCreaor 遇到的问题及解决方案

最近两个月, 我们一直在用 CocosCreator 做一个休闲游戏, 在享受 Creator 高效的过程中我们也遇到了这样那样的问题. 有些问题是我们的用法不正确, 有些则是引擎和编辑器的 bug, 好在这些问题基本上都解决了.

今天我和大家分享下我们团队在使用 CocosCreaor 遇到的问题及解决方案.

将 python 数据转化为 TypeScript 格式

前段时间写过这篇文章将 python 数据转化为 lua 格式, 这段时间因为新项目改用 Creator + TypeScript 的原因, 需要导出 ts 格式的数据.

当然我们可以选择使用 json/yaml 等格式作为数据文件, 这会简单很多, 但是有两个原因, 使得我们一致认为 ts 格式的数据是更好的选择:

  1. 访问数据时 VSCode 会根据数据内容给出提示
  2. 打包时会被编译加密, 省去自己加密数据文件的工作

用 python 撸一个 ccbwriter

之前可能和大家说过我们项目的 UI 编辑器是上古神器 CocosBuilder, 这个编辑器诞生在那个 cocos2d-x 还需手写 ui 代码的年代, 是 cocos 发展史上一个重要转折点. 它标志着触屏手机游戏行业 ui 不再像之前那样只是简单的串联的作用, 而是像端游那样重交互, 可视化编辑的路线.

如何为 Creator 添加 js/ts 第三方库支持

正如知乎我的这个回答中所说, 我们开始使用 Cocos Creaor 开发新的项目, 所以以后这个博客会陆续开始更新一些 Creator 相关的文章.

我们在项目开发的过程中, 肯定会遇到一些项目间通用的需求, 比如 压缩/加密 之类的, 我们当然可以自己实现一个, 但更好的做法是找找网上有没有别人实现好的库直接拿来用, 今天我们就来看看如何为 Creator 添加添加 js/ts 第三方库支持.

iOS 打包工具在 XCode9 下的改动

相信大家都会用到 iOS 的自动打包工具, 而不是每次都是通过 XCode 的 Archive 后手动导出的, 那样效率低下不说还增加出错的可能.

我们团队也是如此, 用 Python 搞了一套打包工具, 这套工具的核心是 XCode 附带的命令行工具 xcodebuild, 网上其他开源的打包工具也都大同小异. 这套工具自诞生以来一直运行的很稳定, 累计为我们打了数百个包, 为团队节省的时间估计也在数千分钟了.

更新 spine 的 cocos2d-x runtimes (二)

前段时间一个朋友向我咨询播放 spine 动画时遇到的问题:

这个问题我们在很久之前也遇到过, 当时是另个一小伙伴负责的. 当时猜测可能是 spine runtimes 需要升级, 但是升级时遇到了技术问题, 恰好项目比较紧, 便让美术同学重新用老版的 Spine 编辑器重新做了一遍.

订阅 Hexo 的主题页

作为一个经常换博客主题的人, 时不时的就会去 Hexo 的主题页 逛逛, 看看有什么新的主题, 膜拜下大触们的作品.

比较麻烦的是这个页面并不是按照更新时间排序的, 也没有提供按时间排序的功能, 所以只能靠记忆力了. 这样很容易错过新的主题, 而且每次都是从头找起, 效率极低.

我自己是一个 Feed 的重度用户, 几乎是我扩展学习的唯一途径. 那么能不能将这个界面做成一个订阅源呢?

解决 electron-builder 打包依赖问题

大概是三个月前, 写了 使用 Electron 重写 convert2fnt 这篇文章, 文章大概讲了我用 Electron 重写之前的一个 BMFont 字体生成工具的事情.

开发的过程还是比较顺利的, Node.js 的生态非常给力, 加上 Chrome, VSCode 加持, 开发和调试都很爽. 但由于我没有 WEB 开发的基础, 整过过程只能摸索加网上查资料, 中间之曲折, 自不足为外人道也, 但最终磕磕绊绊的也算搞出来了.

呃, 其实也没有那么完美.

Windows 版打包后发现运行不太正常, 但 Win 开发版以及 Mac 开发/发布版都运行正常.

有些诡异, 不过我自己只在 Mac 上使用, 加上工作比较忙, 便搁置了起来. 但谁愿意在自己头上悬在一把利剑呢, 万一哪天着急用 Win 版的怎么办.

趁着国庆放假还没有什么安排的时候, 赶紧搞一下.

Quick-cocos2d-x 编译 Lua 代码加速

quick-x 在手机上运行的时候并不是加载项目的 Lua 的源码, 而是一个名为 game.zip 的压缩包. 当项目中的 Lua 文件越来越多的时候, 生成这个 game.zip 的时间会越来越久.

我们目前的项目有 1256 个 Lua 文件, 每次执行编译操作需要耗时将近 40 秒的时间:

1
2
3
4
5
time $QUICK_V3_ROOT/quick/bin/compile_scripts.sh -q -i ../src -o ../res/game.zip -e xxtea_zip -ek xxxx -es xxx
---
real 0m38.603s
user 0m25.792s
sys 0m3.369s

尤其是当需要在手机上调试 Lua 代码的时候, 每改一次代码就需要运行一次这个命令, 然后 40 秒就过去了, 你恐怕都忘记自己该关注什么改动了吧!