Cocos Creator开发踩坑记录:Shader特效、UI组件与性能优化
这篇文章整理我在2021年使用Cocos Creator开发游戏时遇到的一些技术问题和解决方案,包括Shader编写、UI组件开发、性能优化等方面。
Shader特效开发
被击闪红效果
使用自定义Material实现角色被攻击时的闪红效果。
Effect文件:attacked.effect
1 | CCEffect %{ |
Material配置:
- USE_TEXTURE:选择true
- Effect:选择attacked
TypeScript调用:
1 | private attackOne(render: cc.RenderComponent) { |
Shader语法注意事项
Cocos Creator 2.3+对Shader语法要求更严格:
错误: missing semicolon after UBO 'xxxx' declaration
原因: UBO(Uniform Buffer Object)后必须加分号
1 | // 错误 |
图片变灰效果
使用引擎内置的灰度材质:
1 | let grey = true; |
字体/图片渐变效果
ColorAssembler2D.ts组件:
1 | const { ccclass, property, executeInEditMode, requireComponent, menu } = cc._decorator; |
使用方式:
- 拖拽到图片节点或字体Label节点
- 设置4个颜色进行渐变(左上、右上、左下、右下)
虚拟摇杆实现
摇杆类型定义
JoystickCommon.js:
1 | export default { |
摇杆控制器
Joystick.js:
1 | import JoystickCommon from 'JoystickCommon' |
角色控制器
Player.js:
1 | import { SpeedType } from 'JoystickCommon' |
嵌套滚动列表
实现纵向ScrollView中嵌套横向ScrollView的功能。
外层纵向列表
1 | setScrollTouchBegan(event) { |
内层横向列表
1 | onLoad() { |
重要设置
在预制体界面中,去掉勾选ScrollView里的Cancel Inner Events,否则会出现TouchEnd事件丢失,导致滚动界面卡在中间的问题。
龙骨动画动态创建
1 | cc.loader.loadResAll('dgb', (err, assets) => { |
性能优化技巧
统计图片内存占用
1 | // 遍历cc.loader._cache |
代码执行时间检测
1 | console.time("saveData time"); |
随机数种子
实现可重复的随机序列:
1 | Math.seed = 5; |
减少脚本文件大小
- 启用代码混淆压缩
- 删除未使用的代码和资源
- 使用纹理图集合并小图
- 启用引擎的裁剪功能
Android平台常见问题
M1芯片Mac兼容性问题
问题: Creator打开黑屏
解决方案: 升级到Cocos Creator 2.4.5以上版本
命令行打包日志查看
日志文件位置:
1 | C:\Users\Administrator\.CocosCreator\logs |
- CocosCreator.log: Creator构建日志
- native.log: 编译详细日志
Android Studio调试快捷键
| 快捷键 | 功能 |
|---|---|
| Ctrl+P | 打开文件 |
| Ctrl+Shift+F | 搜索字符串 |
| Ctrl+G | 跳转到行 |
| Ctrl+Shift+O | 查找方法 |
| Ctrl+D | 查找下一个匹配项 |
字体处理工具
TTF字体裁剪
使用font-spider工具裁剪字体文件,只保留项目使用的字符:
1 | npm i -g font-spider |
裁剪脚本示例:
1 | let fs = require('fs'); |
开发资源推荐
音乐音效网站
| 网站 | 类型 |
|---|---|
| https://opengameart.org/ | 游戏素材 |
| https://www.aigei.com/sound/class/games_category/ | 音效库 |
| https://freesound.org/ | 免费音效 |
| https://www.bensound.com/ | 背景音乐 |
| https://musmus.main.jp/bgm.html | 日系BGM |
在线压缩工具
| 工具 | 用途 |
|---|---|
| https://www.mp3smaller.com/zh/ | MP3压缩 |
| https://www.imagesmaller.com | 图片压缩 |
以上是我2021年Cocos Creator开发中遇到的一些技术问题和解决方案,希望对同样使用Creator的开发者有所帮助。