Unity游戏优化(第3版)
引导读者优化游戏开发中的方方面面,从游戏角色到脚本,一直到动画优化。随书赠送学习资源,获取地址见书封底二维码。

作者:[意]大卫·阿韦尔萨(Davide Aversa)、[英]克里斯·迪金森(Chris Dickinson)著 蔡俊鸿 译

定价:98元

印次:1-2

ISBN:9787302613282

出版日期:2022.09.01

印刷日期:2025.05.28

图书责编:王军

图书分类:零售

电子书
在线购买
分享
内容简介
作者简介
前言序言
资源下载
查看详情 查看详情 查看详情

主要内容: 使用Unity Profiler发现程序中的瓶颈并找到解决方法 发现VR项目中关键的性能问题,并学习如何处理它们 以易用的方式增强着色器,通过细微而有效的性能调整优化它们 使用物理引擎使场景尽可能动态化 组织、过滤和压缩艺术资源,在保持高品质的同时实现性能**化 使用Mono框架和C#实现内存利用**化,以及优化GC

Aversa博士拥有意大利罗马大学(University of Rome La Sapienza)的人工智能博士学位以及人工智能和机器人硕士学位。他对用于开发交互式虚拟代理和程序内容生成的人工智能有着浓厚的兴趣。他曾担任电子游戏相关会议的程序委员会成员,如IEEE计算智能和游戏会议,也经常参加game-jam比赛。他还经常撰写有关游戏设计和游戏开发的博客。我要感谢家人在这一年里给我提供了稳定的生活;感谢Twitter上的Unity开发者帮助我澄清了Unity内部最模糊的元素;还要感谢Keagan和Packt Publishing的其他编辑帮助我完成这项工作,并对我延迟交稿表示理解。Chris Dickinson在英格兰一个安静的小镇长大,对数学、科学,尤其是电子游戏满怀热情。他喜欢玩游戏并剖析游戏的玩法,并试图确定它们是如何工作的。在看了爸爸破解一个PC游戏的十六进制代码来规避早期的版权保护后,他完全震惊了,他对科学的热情在当时达到了**。Chris获得电子物理学的硕士学位后,他飞到美国加州,在硅谷中心的科学研究领域工作。不久后,他不得不承认,研究工作并不适合他。在四处投简历之后,他找到了一份工作,最终让他走上了软件工程的正确道路(据说,这对于物理学专业毕业生来说并不罕见)。Chris是IPBX电话系统的自动化工具开发人员,他的性格更适合从事该工作。现在,他正在研究复杂的设备链,帮助开发人员修复和改进这些设备,并开发自己的工具。Chris学习了很多关于如何使用大型、复杂、实时、基于事件、用户输入驱动的状态机方面的知识。在这方面,Chris基本上是自学成才的,他对电子游戏的热情再次高涨,促使他真正弄清楚了电子游戏的创建方式。当他有足够的信心时,他回到学校攻读游戏和模拟编程的学士学位。当他获得学位时,已经可以用C++编写自己的游戏引擎(尽管还很初级),并在日常工作中经常使用这些技能。然而,由于想创建游戏(应该只是创建游戏,而不是编写游戏引擎),Chris选择了他最喜欢的公开发行的游戏引擎——一个称为Unity3D的优秀小工具,并开始制作一些游戏。经过一段时间的独立开发游戏,Chris遗憾地决定,这条特定的职业道路并不适合他,但他在短短几年内积累的知识,以大多数人的标准来看,令人印象深刻,他喜欢利用这些知识帮助其他开发人员创建作品。从那以后,Chris编写了一本关于游戏物理的教程(Learning Game Physics with Bullet Physics and OpenGL,Packt Publishing)和两本关于Unity性能优化的书籍。他娶了他一生的挚爱Jamie,并在加州圣马特奥市的Jaunt公司(这是一家专注于提供VR和AR体验(如360视频)的虚拟现实/增强现实初创公司)工作,研究最酷的现代技术,担任测试领域的软件开发工程师(SDET)。工作之余,Chris一直苦恼于对棋盘游戏的沉迷(特别是《太空堡垒:卡拉狄加与血腥狂怒》),他痴迷于暴雪的《守望先锋》和《星际争霸2》,专注于Unity**版本,经常在纸上勾画关于游戏的构思。不久的将来,当时机成熟的时候(当他不再懈怠时),相信他的计划就会实现。

前 言 用户体验在所有游戏中都是重要的组成部分,它不仅包括游戏的剧情和玩法,也包括运行时画面的流畅性、与多人服务器连接的可靠性、用户输入的响应性,甚至由于移动设备和云下载的流行,它还包括最终程序文件的大小。由于Unity等工具提供了大量有用的开发功能,还允许个人开发者访问,因此游戏开发的门槛已大大降低。然而,由于游戏行业的竞争激烈,玩家对游戏最终品质的期望日益提高,因此就要求游戏的各方面应能经得起玩家和评论家的考验。 性能优化的目标与用户体验密不可分。缺乏优化的游戏会导致低帧率、卡顿、崩溃、输入延迟、过长的加载时间、不一致和令人不舒服的运行时行为、物理引擎的故障,甚至过高的电池消耗(移动设备通常被忽略的指标)。只要遭遇上述问题之一,就是游戏开发者的噩梦,因为即使其他方面都做得很好,评论也会只炮轰做得不好的一个方面。 性能优化的目标之一是最大化地利用可用资源,包括CPU资源,如消耗的CPU循环数、使用的主内存空间大小(称为RAM),也包括GPU资源(GPU有自己的内存空间,称为VRAM),如填充率、内存带宽等。然而,性能优化最重要的目标是确保没有资源会不合时宜地导致性能瓶颈,优先级最高的任务得到优先执行。哪怕很小的、间歇性的停顿或性能方面的延迟都会破坏玩家的体验,打破沉浸感,限制开发人员尝试创建体验的潜力。另一个需要考虑的事项是,节省的资源越多,在游戏中创建的活动便越多,从而产生更有趣、更生动的玩法。 同样重要的是,要决定何时后退一步,停止增强性能。在一个拥有无限时间和资源的世界里,总会有一种方法能让游戏变得更出色、更快、更高效。在开发过程中,必须确定产...

目录
荐语
查看详情 查看详情
目    录

 

第Ⅰ部分  基本的脚本优化

第1章  研究性能问题 2

1.1  使用Unity Profiler收集分析数据 3

1.1.1  启动Profiler 4

1.1.2  Profiler窗口 8

1.2  性能分析的最佳方法 17

1.2.1  验证脚本是否存在 18

1.2.2  验证脚本次数 18

1.2.3  验证事件的顺序 19

1.2.4  最小化正在进行的代码更改 20

1.2.5  最小化内部影响 20

1.2.6  最小化外部影响 22

1.2.7  代码片段的针对性

分析 22

1.3  关于分析的思考 26

1.3.1  理解Profiler工具 27

1.3.2  减少干扰 27

1.3.3  关注问题 28

1.4  本章小结 28

第2章  脚本策略 29

2.1  使用最快的方法获取组件 30

2.2  移除空的回调定义 31

2.3  缓存组件引用 34

2.4  共享计算输出 35

2.5  Update、Coroutines和InvokeRepeating 36

2.6  更快的GameObject空引用检查 39

2.7  避免从GameObject中检索字符串属性 40

2.8  使用合适的数据结构 42

2.9  避免在运行时修改

Transform的父节点 43

2.10  关注缓存Transform的 变化 44

2.11  避免在运行时使用Find()和 SendMessage()方法 45

2.11.1  将引用分配给预先

存在的对象 ... 查看详情

Unity引擎提供的一系列卓越功能可以帮助开发 者构建高性能的游戏。本书引导读者优化游戏开发中的方方面面,从游戏角色到脚本,一直到动画优化。
在本书中,读者将学习提高游戏脚本质量的代码编写技术,学习如何使用E C S和Burs t编译器等Unity技术优化游戏。本书将助力读者使用Unity生态系统管理第三方工具,引导读者解决Unity大型游戏和V R游戏中的性能问题,帮助读者检测性能问题并分析性能根源。随着阅读的深入,读者将学习Unity C#脚本代码的**实践并掌握使用模式,之后会掌握优化音频资源和纹理文件,以及高效地存储和使用资源文件。然后,读者将了解渲染管线并学习如何识别管线中的性能问题。此外,读者还将学习如何优化内存以及Unity的处理器单元。最后,读者将获得Unity专家用于提升项目工作流的提示和技巧。
阅读本书,读者将提升使用Unity及其组件构建交互式游戏所需的技能。
查看详情