游戏上线前需要做一次整体的性能优化、检测。
很多时候优化大同小异。
记录一下,以防后面其他项目做检测时漏掉。
工具相关
- 使用
apksinger
代替jarsigner
进行签名(提升android安装率100%) - 导表工具提取相同
string
(策划csv有很多相同string时,把相同string提取出来可以省内存) (相关数据见图1)
资源相关
- 贴图压缩
pvr
、etc
优化显存 - alpha 分离
- 音频
force to mono
(双声道变单声道);ios
使用mp3
格式(硬件加速) - 动画
animationCompression
设置keyFrameReduction
(减少关键帧) - 网格压缩(减面)
-
assetbundle
构建时加入DisableWriteTypeTree
, 使用lz4
压缩
游戏内容
- 关闭垂直同步,限帧(减少cpu耗电)
- NGUI 界面
drawcall
优化 - 协议压缩(自定义压缩格式、
protobuf
(减少用户网络流量)) - 捕获unity报错日志上传服务器
Application.logMessageReceived
(不能用协程上传服务器,异常会导致携程死循环) - 对象池(解决unity 内存碎片问题)
- 读写目录(
Application.persistentDataPath
)写入不了时,尝试其他目录 - IMEI 需要权限才能获取,如果获取不到可以
Guid.NewGuid
生成唯一ID缓存到本地当成唯一标识(用户统计) - C# 非托管代码
MemoryStream
等是否有调用dispose()
热更相关
- 多个备用CDN,访问失败时进行轮询
- CDN上的文件必须是唯一的(文件名带版本号、
md5
) - 不能修改文件名的文件(
ver.txt
) 必须回源,或者直接访问源站 - 同步CDN时,版本文件最后进行同步
相关资料:
浅谈unity内存管理
unity 优化实战训练营
unity手册 了解unity中的优化
Unity制作人专场:《Unity AAA游戏深度优化》主题演讲
unity 渲染优化教程