Skip to content

Latest commit

 

History

History
190 lines (100 loc) · 4.27 KB

File metadata and controls

190 lines (100 loc) · 4.27 KB

第1章:性能调优入门

  • •核心内容

    • •指标定义:帧率(游戏内60FPS/游戏外30FPS)、内存阈值(iOS设备实测崩溃阈值表)
    • •问题分类:
      • •内存问题:泄漏检测(多次场景切换观测内存增长)
      • •处理负载:瞬时峰值(GC/大量计算)、稳态负载(CPU/GPU瓶颈)
    • •工作流程:测量(Profiler)→ 定位原因 → 优化 → 验证对比

第2章:基础

  • •硬件原理

    • •SoC架构:CPU/GPU集成设计

    • •CPU特性:流水线机制、缓存层级(L1/L2/L3)

    • •GPU特性:并行计算架构、显存传输瓶颈

  • •渲染流程

    • •渲染管线:顶点着色器→片段着色器

    • •过度绘制:半透明物体叠加渲染

  • •数据表示

    • •纹理内存公式:宽×高×通道数×位深/8

    • •网格结构:顶点坐标/UV/法线数据

  • •

    Unity机制

    • •IL2CPP编译:IL→C++→机器码

    • •AssetBundle依赖:避免重复资源


第3章:性能分析工具

  • •工具矩阵

    工具类型 代表工具 核心功能
    Unity内置 Profiler CPU/内存/GPU模块化分析
    内存分析 Memory Profiler 快照对比(图3.4操作界面)
    GPU分析 RenderDoc 绘制指令捕获(图3.9界面)
    原生工具 Xcode Instruments iOS内存分配跟踪(图3.6.4)
  • •操作守则:优先真机测量,编辑器数据仅作参考


第4章:调优实践-资源

  • •纹理优化

    • •禁用Read/Write(节省内存副本)

    • •ASTC压缩策略:6×6平衡大小/速度

  • •网格优化

    • •顶点压缩:剔除冗余法线/切线数据

    • •启用Optimize Mesh Data选项

  • •动画优化

    • •关键帧精简:减少30%曲线数据

    • •蒙皮权重:骨骼数≤4


第5章:调优实践-资源包

  • •AssetBundle策略

    • •粒度设计:按功能模块分包(如"角色_材质"独立包)

    • •压缩选择:LZ4(加载速度)> LZMA(包体大小)

    • •依赖管理:共享资源独立打包(图2.34依赖关系)


第6章:调优实践-物理

  • •碰撞检测优化

    • •层级矩阵:减少不必要的碰撞对(如UI层无视环境碰撞)

    • •射线检测:

      // 避免GC分配
      RaycastHit[] results = new RaycastHit[10];
      Physics.RaycastNonAlloc(ray, results);
      
    • •刚体睡眠:启用Sleeping State减少计算


第7章:调优实践-图形

  • •分辨率策略

    • •动态缩放:根据设备性能降分辨率(720p→540p)
  • •批处理技术

    • •静态批处理:合并静态物体网格(省Draw Call)

    • •GPU实例化:相同材质/网格物体批量渲染

    • •SRP Batcher:变体相同材质合并SetPass Call

  • •遮挡剔除

    • •预计算场景遮挡数据(图7.5.3)

第8章:调优实践-用户界面

  • •画布分区

    • •动态元素(血条)与静态背景分离
  • •射线投射优化

    • •非交互元素禁用Raycast Target
  • •文本渲染

    • •TextMeshPro替代UGUI Text(节省50%顶点)

第9-10章:脚本优化

  • •GC分配规避

    场景 优化方案 效果
    对象高频创建 对象池(ObjectPool) 零GC分配
    字符串拼接 StringBuilder复用 减少内存碎片
    LINQ查询 转for循环 避免延迟执行开销
  • •Burst编译加速

    [BurstCompile]
    struct ParallelJob : IJobParallelFor { ... }
    

第11章:玩家设置

  • •后端选择:IL2CPP > Mono(性能提升20%)

  • •代码剥离:Managed Stripping Level = High


第12章:第三方库

  • •DOTween:启用autoKill减少内存驻留

  • •UniTask:CancelationToken管控异步任务