资源预算与性能成本
性能预算需要围绕一帧中同时出现的资源与目标设备制定。一个模型单独流畅,不代表一百个模型、UI、粒子和业务逻辑同时运行也流畅。
四种成本分别看
| 维度 | 常见变量 | 测量证据 |
|---|---|---|
| 下载与加载 | 包体、压缩、请求、解码 | 首屏耗时、网络瀑布、解码耗时 |
| 内存 | 纹理、网格、动画、CPU副本 | 引擎统计与设备内存观测 |
| CPU | 脚本、动画求值、提交绘制、物理 | 帧时间分析与采样 |
| GPU | 顶点、像素、透明叠加、阴影、着色 | GPU相关统计与逐项对比 |
不要看到 FPS 低就直接减面数。若瓶颈是透明特效覆盖全屏或 CPU 动画计算,减少静态模型三角形可能没有明显帮助。
PNG 体积与纹理内存
一张 1024×1024 的 RGBA8 基准层纹理,像素数据为 1024×1024×4 字节,即 4 MiB。完整方形 mip 链约增加到 4/3,即约 5.33 MiB。无损 PNG 在磁盘上可能小很多,解码上传后的表示不同。
这是指定格式的理论估算,不含驱动、对齐、CPU副本与其他资源。GPU 压缩格式按块存储,不能继续使用每像素4字节公式。可在纹理实验调整尺寸与数量。
材质与绘制批次
一个 Mesh 可以有多个材质和子网格,因此“一对象”并不等于“一次绘制”。相同材质的实例也不一定自动合批;引擎实例化、灯光、阴影 Pass、蒙皮与渲染状态都可能影响绘制次数。
优化时先记录当前情况,再尝试减少材质切换、共享资源、使用合适合批策略。不要为了追求低批次破坏所有可动层级,导致游戏功能无法实现。
动画与骨骼
骨骼数量、每顶点影响数、同时活动角色数、动画混合与求值方式都会影响成本。机器人只有11根骨骼用于教学,不能把这个数量当成正式角色上限。
Cocos 的烘焙骨骼动画与实时计算有不同能力和代价;选择应依据动作混合需求、平台与实际测试。远处角色可以降低更新频率或使用 LOD 等策略,但要验证视觉质量和组件支持。
给 AI 一个性能问题
当前场景有40个角色、每个4材质,目标设备帧时间超预算。
请先列出CPU/GPU/内存的可能瓶颈与需要采集的证据。
每次只改一个变量,记录画质、内存、帧时间和加载变化。
不要先假定三角形数是唯一原因。
真实微信小游戏还受设备、微信版本、运行环境与后台恢复影响。本站不提供未经真机测量的性能承诺;验证方法见微信章节。
官方阅读:iOS微信小游戏内存与性能优化指南、骨骼动画两套系统。