Unity游戏优化 第2版
作者: (英)克里斯 迪金森(Chris Dickinson) 著 蔡俊鸿,雷鸿飞 译
出版时间: 2020年版
内容简介
● 使用Unity Profiler查找程序中任何地方的瓶颈,并发现解决它们的方法。 ● 实现C#脚本编写的更佳实践,避免常见误区。 ● 深入理解渲染管线,通过减少绘制调用和避免填充率瓶颈来更大化渲染管线的性能。 ● 以大多数开发者都能理解的方式增强着色器,通过微妙而有效的性能调整优化它们。 ● 充分利用物理引擎使场景尽可能保持动态。 ● 组织、过滤并压缩艺术资源,保持高品质的同时更大化性能。 ● 发现VR项目中各种严重的性能问题,找到解决它们的方法。 ● 使用Mono框架和C#实现底层强化以更大化内存使用,避免垃圾回收。 ● 了解项目组织的更佳实践,通过改进工作流来节省时间。
目录
第1章 研究性能问题
1.1 UnityProfiler
1.1.1 启动Profiler
1.1.2 Profiler窗口
1.2 性能分析的最佳方法
1.2.1 验证脚本是否出现
1.2.2 验证脚本次数
1.2.3 验证事件的顺序
1.2.4 最小化正在进行的代码更改
1.2.5 最小化内部影响
1.2.6 最小化外部影响
1.2.7 代码片段的针对性分析
1.3 关于分析的思考
1.3.1 理解Profiler工具
1.3.2 减少干扰
1.3.3 关注问题
1.4 本章小结
第2章 脚本策略
2.1 使用最快的方法获取组件
2.2 移除空的回调定义
2.3 缓存组件引用
2.4 共享计算输出
2.5 Update、Coroutines和Invoke Repeating
2.6 更快的Game Object空引用检查
2.7 避免从Game Object取出字符串属性
2.8 使用合适的数据结构
2.9 避免运行时修改Transform的父节点
2.10 注意缓存Transform的变化
2.11 避免在运行时使用Find()和Send Message()方法
2.11.1 将引用分配给预先存在的对象
2.11.2 静态类
2.11.3 单例组件
2.11.4 全局消息传递系统
2.12 禁用未使用的脚本和对象
2.12.1 通过可见性禁用对象
2.12.2 通过距离禁用对象
2.13 使用距离平方而不是距离
2.14 最小化反序列化行为
2.14.1 减小序列化对象
2.14.2 异步加载序列化对象
2.14.3 在内存中保存之前加载的序列化对象
2.14.4 将公共数据移入Scriptable Object
2.15 叠加、异步地加载场景
2.16 创建自定义的Update()层
2.17 本章小结
第3章 批处理的优势
3.1 Draw Call
3.2 材质和着色器
3.3 Frame ebugger
3.4 动态批处理
3.4.1 顶点属性
3.4.2 网格缩放
3.4.3 动态批处理总结
3.5 静态批处理
3.5.1 Static标记
3.5.2 内存需求
3.5.3 材质引用
3.5.4 静态批处理的警告
3.5.5 静态批处理总结
3.6 本章小结
……
第4章 着手处理艺术资源
第5章 加速物理
第6章 动态图形
第7章 虚拟速度和增强加速度
第8章 掌握内存管理
第9章 提示与技巧