网站首页  软件下载  游戏下载  翻译软件  电子书下载  电影下载  电视剧下载  教程攻略

请输入您要查询的图书:

 

书名 Unity游戏优化(第3版)
分类
作者 (意)大卫·阿韦尔萨//(英)克里斯·迪金森
出版社 清华大学出版社
下载
简介
内容推荐
Unity引擎提供的一系列卓越功能可以帮助开发者构建高性能的游戏。本书引导读者优化游戏开发中的方方面面,从游戏角色到脚本,一直到动画优化。
在本书中,读者将学习提高游戏脚本质量的代码编写技术,学习如何使用ECS和Burst编译器等Unity技术优化游戏。本书将助力读者使用Unity生态系统管理第三方工具,引导读者解决Unity大型游戏和VR游戏中的性能问题,帮助读者检测性能问题并分析性能根源。随着阅读的深入,读者将学习Unity C#脚本代码的最佳实践并掌握使用模式,之后会掌握优化音频资源和纹理文件,以及高效地存储和使用资源文件。然后,读者将了解渲染管线并学习如何识别管线中的性能问题。此外,读者还将学习如何优化内存以及Unity的处理器单元。最后,读者将获得Unity专家用于提升项目工作流的提示和技巧。
阅读本书,读者将提升使用Unity及其组件构建交互式游戏所需的技能。
作者简介
克里斯·迪金森(Chris Dickinson)在英格兰一个安静的小角落里长大,对数学、科学,尤其是电子游戏满怀热情。他喜欢玩游戏并剖析游戏的玩法,并试图确定它们是如何工作的。Chris在获得电子物理学的硕士学位后,他飞到美国加州,在硅谷中心的科学研究领域工作。不久后,他不得不承认,研究工作并不适合他的性格。在四处投简历之后,他找到了一份工作,最终让他走上了软件工程的正确道路(据说,这对于物理学毕业生来说并不罕见)。
Chris是IPBX电话系统的自动化工具开发人员,这段时间的工作更适合他的性格。现在,他正在研究复杂的设备链,帮助开发人员修复和改进这些设备,并开发自己的工具。Chris学习了很多关于如何使用大型、复杂、实时、基于事件、用户输入驱动的状态机的知识。在这方面,Chris基本上是自学成才的,他对电子游戏的热情再次高涨,促使他真正弄清楚电子游戏是如何创建的。当他有足够的信心时,他回到学校攻读游戏和模拟编程的学士学位。当他获得学位时,他已经在用C++编写自己的游戏引擎(尽管还很初级),并在日常工作中经常使用这些技能。然而,如果想创建游戏,应该只是创建游戏,而不是编写游戏引擎。因此,Chris选择了他最喜欢的公开发行的游戏引引擎引擎擎——一个称为Unity3D的优秀小工具——并开始制作一些游戏。
经过一段时间的独立游戏开发,Chris遗憾地决定,这条特定的职业道路的要求并不适合他,但他在短短几年积累的知识量,以大多数人的标准来看,都令人印象深刻,他喜欢利用这些知识帮助其他开发人员创建作品。从那以后,Chris编写了一本关于游戏物理的教程(Learning Game Physics with Bullet Physics and OpenGL,Packt Publishing)和两本关于Unity性能优化的书籍。他娶了他一生的挚爱Jamie,并开始在加州圣马特奥市的Jaunt公司工作,研究最酷的现代技术,担任测试领域的软件开发工程师(SDET),这是一家专注于提供VR和AR体验(例如360视频)的虚拟现实/增强现实初创公司。
工作之余,Chris一直抵抗对棋盘游戏的沉迷(特别是《太空堡垒:卡拉狄加与血腥狂怒》),他痴迷于暴雪的《守望先锋》和《星际争霸2》,专注地盯着Unity最新版本,在纸上勾画出一组关于游戏的构思。
目录
第Ⅰ部分 基本的脚本优化
第1章 研究性能问题
1.1 使用Unity Profiler收集分析数据
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和InvokeRepeating
2.6 更快的GameObject空引用检查
2.7 避免从GameObject中检索字符串属性
2.8 使用合适的数据结构
2.9 避免在运行时修改Transform的父节点
2.10 关注缓存Transform的 变化
2.11 避免在运行时使用Find()和 SendMessage()方法
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 将公共数据移入ScriptableObject
2.15 叠加、异步地加载场景
2.16 创建自定义的Update()层
2.17 本章小结
第Ⅱ部分 图形优化
第3章 批处理的优势
3.1 Draw Call
3.2 材质和着色器
3.3 Frame Debugger
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章 优化艺术资源
4.1 音频文件
4.1.1 导入音频文件
4.1.2 加载音频文件
4.1.3 编码格式与品质级别
4.1.4 音频性能增强
4.2 纹理文件
4.2.1 纹理压缩格式
4.2.2 纹理性能增强
4.3 网格和动画文件
4.3.1 减少多边形数量
4.3.2 调整网格压缩
4.3.3 恰当使用Read-Write Enabled
4.3.4 考虑烘焙动画
4.3.5 合并网格
4.4 Asset Bundle和Resource
4.5 本章小结
第5章 加速物理引擎
5.1 物理引擎的内部工作情况
5.1.1 物理和时间
5.1.2 静态碰撞器和动态碰撞器
5.1.3 碰撞检测
5.1.4 碰撞器类型
5.1.5 碰撞矩阵
5.1.6 Rigidbody激活和休眠状态
5.1.7 射线和对象投射
5.1.8 调试物理
5.2 物理性能优化
5.2.1 场景设置
5.2.2 适当使用静态碰撞器
5.2.3 恰当使用触发体积
5.2.4 优化碰撞矩阵
5.2.5 首选离散碰撞检测
5.2.6 修改固定更新频率
5.2.7 调整允许的最大时间步长
5.2.8 最小化射线投射和边界体积检查
5.2.9 避免复杂的网格碰撞器
5.2.10 避免复杂的物理组件
5.2.11 使物理对象休眠
5.2.12 修改处理器迭代次数
5.2.13 优化布娃娃
5.2.14 确定何时使用物理
5.3 本章小结
第6章 动态图形
6.1 管线渲染
6.1.1 GPU前端
6.1.2 GPU后端
6.1.3 光照和阴影
6.1.4 多线程渲染
6.1.5 低级渲染API
6.2 性能检测问题
6.2.1 分析渲染问题
6.2.2 暴力测试
6.3 渲染性能的增强
6.3.1 启用/禁用GPU Skinning
6.3.2 降低几何复杂度
6.3.3 减少曲面细分
6.3.4 应用GPU实例化
6.3.5 使用基于网格的LOD
6.3.6 使用遮挡剔除
6.3.7 优化粒子系统
6.3.8 优化Unity UI
6.3.9 着色器优化
6.3.10 使用更少的纹理数据
6.3.11 测试不同的GPU纹理压缩格式
6.3.12 最小化纹理交换
6.3.13 VRAM限制
6.3.14 照明优化
6.3.15 优化移动设备的渲染性能
6.4 本章小结
第Ⅲ部分 高级优化
第7章 虚拟现实和增强现实的优化
7.1 XR技术概述
7.2 XR开发
7.3 XR中的性能增强
7.3.1 物尽其用
7.3.2 单通道立体渲染和多通道立体渲染
7.3.3 应用抗锯齿
随便看

 

霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。

 

Copyright © 2002-2024 101bt.net All Rights Reserved
更新时间:2025/1/31 22:06:06