fbpx

[email protected]

购物车

 查看订单

  • 我的帐户
东东购 | EasternEast
  • 中文书店
    • 畅销排行榜
      • 小说 畅销榜
      • 童书 畅销榜
      • 外语畅销榜
      • 管理畅销榜
      • 法律畅销榜
      • 青春文学畅销榜
    • 热门分类
      • 社会小说
      • 成功/励志 畅销榜
      • 人物传记
      • 大陆原创
      • 绘本童书
      • 影视小说
    • 文学推荐
      • 文集
      • 戏剧
      • 纪实文学
      • 名家作品
      • 民间文学
      • 中国现当代随笔
    • 新书热卖榜
      • 小说 新书热卖榜
      • 青春文学 新书热卖榜
      • 童书 新书热卖榜
      • 管理 新书热卖榜
      • 成功/励志 新书热卖榜
      • 艺术 新书热卖榜
  • 精选分类
    • 小说
    • 保健养生
    • 烹饪/美食
    • 风水/占卜
    • 青春文学
    • 童书
    • 管理
    • 成功/励志
    • 文学
    • 哲学/宗教
    • 传记
    • 投资理财
    • 亲子家教
    • 动漫/幽默
    • 法律 Legal
    • 经济 Economics
    • 所有分类
  • 关于东东
  • 帮我找书
搜索
首页计算机/网络图形图像多媒体Unity 游戏优化(第2版)

Unity 游戏优化(第2版)

帮助开发者建立关于从托管代码到引擎渲染,从CPU、内存到GPU,从传统游戏到XR 应用程序的性能优化体系,深入浅出大量讲解细节,是想要对Unity3D 程序进行性能优化的开发者的*。

作者:[英] 克里斯·迪金森(Chris Dickinson)著 蔡俊鸿 雷鸿飞译 出版社:清华大学出版社 出版时间:2020年05月 

ISBN: 9787302550518
年中特卖用“SALE15”折扣卷全场书籍85折!可与三本88折,六本78折的优惠叠加计算!全球包邮!
trust badge

EUR €58.99

类别: 计算机/网络 新书热卖榜, 图形图像多媒体 SKU:5edea0a15f98495f50fd842c 库存: 有现货
  • 描述
  • 评论( 0 )

描述

开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302550518

产品特色

编辑推荐

Unity是一个令人惊叹的游戏开发框架,它包含大量的特性集且易于使用,有助于将一些*炫酷的处理和渲染功能呈现给业余爱好者和专业人士。

本书展示了如何使用Unity 2017提升游戏性能,并演示高性能不仅局限于预算高的游戏。

由于没有什么能比糟糕的用户体验更快地让玩家远离游戏,因此本书首先解释了如何使用Unity Profiler检测问题,学习如何使用秒表、计时器和日志方法诊断问题。

接着介绍Unity内置的批处理流程,它们何时能用于提升性能;分析将在运行时使用*小化的空间、CPU和内存导入艺术资源,并发掘一些未充分利用的特性和方法,来管理资源数据。

然后深入研究Unity3D引擎的底层,讨论一些只有深入了解其内部工作原理的情况下才能理解的问题。

本书*后学习如何适当地组织资源来改进开发工作流,以及如何通过对象池快速有效地实例化资产。

 

内容简介

● 使用Unity Profiler查找程序中任何地方的瓶颈,并发现解决它们的方法。

● 实现C#脚本编写的更佳实践,避免常见误区。

● 深入理解渲染管线,通过减少绘制调用和避免填充率瓶颈来更大化渲染管线的性能。

● 以大多数开发者都能理解的方式增强着色器,通过微妙而有效的性能调整优化它们。

● 充分利用物理引擎使场景尽可能保持动态。

● 组织、过滤并压缩艺术资源,保持高品质的同时更大化性能。

● 发现VR项目中各种严重的性能问题,找到解决它们的方法。

● 使用Mono框架和C#实现底层强化以更大化内存使用,避免垃圾回收。

● 了解项目组织的*实践,通过改进工作流来节省时间。

作者简介

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版本,在纸上勾画出一组关于游戏的构思。

 

蔡俊鸿,拥有多年游戏开发经验,全程主导多个千万级IP游戏的客户端和服务器开发。擅长服务器和客户端的架构设计以及性能优化、客户端渲染等。目前就职于昆仑万维GameArk,担任技术总监一职。

目  录

第1 章  研究性能问题  1
1.1  Unity Profiler  2
1.1.1  启动Profiler  3
1.1.2  Profiler窗口  7
1.2  性能分析的方法  15
1.2.1  验证脚本是否出现  16
1.2.2  验证脚本次数  16
1.2.3  验证事件的顺序  17
1.2.4  小化正在进行的代码更改  18
1.2.5  小化内部影响  18
1.2.6  小化外部影响  20
1.2.7  代码片段的针对性分析  20
1.3  关于分析的思考  25
1.3.1  理解Profiler工具  26
1.3.2  减少干扰  26
1.3.3  关注问题  27
1.4  本章小结  27
第2 章  脚本策略  29
2.1  使用快的方法获取组件  29
2.2  移除空的回调定义  31
2.3  缓存组件引用  34
2.4  共享计算输出  36
2.5  Update、Coroutines 和InvokeRepeating  36
2.6  更快的GameObject空引用检查  40
2.7  避免从GameObject取出字符串属性  40
2.8  使用合适的数据结构  43
2.9  避免运行时修改Transform的父节点  44
2.10  注意缓存Transform的变化  44
2.11  避免在运行时使用Find()和SendMessage()方法  46
2.11.1  将引用分配给预先存在的对象  49
2.11.2  静态类  51
2.11.3  单例组件  54
2.11.4  全局消息传递系统  58
2.12  禁用未使用的脚本和对象  69
2.12.1  通过可见性禁用对象  70
2.12.2  通过距离禁用对象  71
2.13  使用距离平方而不是距离  72
2.14  小化反序列化行为  73
2.14.1  减小序列化对象  73
2.14.2  异步加载序列化对象  74
2.14.3  在内存中保存之前加载的序列化对象  74
2.14.4  将公共数据移入ScriptableObject  74
2.15  叠加、异步地加载场景  74
2.16  创建自定义的Update()层  76
2.17  本章小结  80
第3 章  批处理的优势  81
3.1  Draw Call  82
3.2  材质和着色器  84
3.3  Frame Debugger  86
3.4  动态批处理  88
3.4.1  顶点属性  89
3.4.2  网格缩放  91
3.4.3  动态批处理总结  92
3.5  静态批处理  93
3.5.1  Static标记  93
3.5.2  内存需求  93
3.5.3  材质引用  94
3.5.4  静态批处理的警告  94
3.5.5  静态批处理总结  95
3.6  本章小结  96
第4 章  着手处理艺术资源  97
4.1  音频  97
4.1.1  导入音频文件  98
4.1.2  加载音频文件  98
4.1.3  编码格式与品质级别  101
4.1.4  音频性能增强  103
4.2  纹理文件  106
4.2.1  纹理压缩格式  106
4.2.2  纹理性能增强  108
4.3  网格和动画文件  116
4.3.1  减少多边形数量  117
4.3.2  调整网格压缩  117
4.3.3  恰当使用Read-Write Enabled  118
4.3.4  考虑烘焙动画  118
4.3.5  合并网格  119
4.4  Asset Bundle和Resource  119
4.5  本章小结  120
第5 章  加速物理  121
5.1  物理引擎的内部工作情况  122
5.1.1  物理和时间  122
5.1.2  静态碰撞器和动态碰撞器  125
5.1.3  碰撞检测  126
5.1.4  碰撞器类型  127
5.1.5  碰撞矩阵  129
5.1.6  Rigidbody激活和休眠状态  129
5.1.7  射线和对象投射  130
5.1.8  调试物理  130
5.2  物理性能优化  132
5.2.1  场景设置  132
5.2.2  适当使用静态碰撞器  134
5.2.3  恰当使用触发体积  134
5.2.4  优化碰撞矩阵  135
5.2.5  离散碰撞检测  136
5.2.6  修改固定更新频率  137
5.2.7  调整允许的时间步长  138
5.2.8  小化射线发射和边界体积检查  139
5.2.9  避免复杂的网格碰撞器  140
5.2.10  避免复杂的物理组件  142
5.2.11  使物理对象休眠  143
5.2.12  修改处理器迭代次数  144
5.2.13  优化布娃娃  145
5.2.14  确定何时使用物理  147
5.3  本章小结  148
第6 章  动态图形  149
6.1  管线渲染  150
6.1.1  GPU前端  151
6.1.2  GPU后端  152
6.1.3  光照和阴影  155
6.1.4  多线程渲染  159
6.1.5  低级渲染API  159
6.2  性能检测问题  160
6.2.1  分析渲染问题  160
6.2.2  暴力测试  162
6.3  渲染性能的增强  163
6.3.1  启用/禁用 GPU Skinning  163
6.3.2  降低几何复杂度  164
6.3.3  减少曲面细分  164
6.3.4  应用GPU实例化  164
6.3.5  使用基于网格的LOD  165
6.3.6  使用遮挡剔除  167
6.3.7  优化粒子系统  168
6.3.8  优化Unity UI  170
6.3.9  着色器优化  174
6.3.10  使用更少的纹理数据  181
6.3.11  测试不同的GPU纹理压缩格式  181
6.3.12  小化纹理交换  182
6.3.13  VRAM限制  183
6.3.14  照明优化  184
6.3.15  优化移动设备的渲染性能  186
6.4  本章小结  188
第7 章  虚拟速度和增强加速度  189
7.1  XR开发  190
7.1.1  仿真  191
7.1.2  用户舒适度  192
7.2  性能增强  194
7.2.1  物尽其用  194
7.2.2  单通道立体渲染和多通道立体渲染  195
7.2.3  应用抗锯齿  196
7.2.4  前向渲染  197
7.2.5  VR的图像效果  197
7.2.6  背面剔除  197
7.2.7  空间化音频  198
7.2.8  避免摄像机物理碰撞  198
7.2.9  避免欧拉角  198
7.2.10  运动约束  199
7.2.11  跟上发展  199
7.3  本章小结  199
第8 章  掌握内存管理  201
8.1  Mono平台  202
8.2  代码编译  209
8.3  分析内存  210
8.3.1  分析内存消耗  210
8.3.2  分析内存效率  211
8.4  内存管理性能增强  212
8.4.1  垃圾回收策略  212
8.4.2  手动JIT编译  213
8.4.3  值类型和引用类型  214
8.4.4  字符串连接  221
8.4.5  装箱(Boxing)  224
8.4.6  数据布局的重要性  226
8.4.7  Unity API中的数组  227
8.4.8  对字典键使用InstanceID  227
8.4.9  foreach循环  228
8.4.10  协程  229
8.4.11  闭包  229
8.4.12  .NET库函数  230
8.4.13  临时工作缓冲区  231
8.4.14  对象池  231
8.4.15  预制池  234
8.4.16  IL2CPP优化  249
8.4.17  WebGL 优化  249
8.5  Unity、Mono和IL2CPP的未来  249
8.6  本章小结  252
第9 章  提示与技巧  253
9.1  编辑器热键提示  254
9.1.1  GameObject  254
9.1.2  Scene 窗口  254
9.1.3  数组  255
9.1.4  界面  255
9.1.5  在编辑器内撰写文档  256
9.2  编辑器UI提示  256
9.2.1  脚本执行顺序  256
9.2.2  编辑器文件  256
9.2.3  Inspector 窗口  258
9.2.4  Project窗口  259
9.2.5  Hierarchy窗口  260
9.2.6  Scene 和 Game 窗口  260
9.2.7  Play模式  262
9.3  脚本提示  262
9.3.1  一般情况  262
9.3.2  特性  263
9.3.3  日志  264
9.3.4  有用的链接  264
9.4  自定义编辑器脚本和菜单提示  265
9.5  外部提示  266
9.6  本章小结  268

前  言

用户体验在所有游戏中都是重要的组成部分,它不仅包括游戏的剧情和玩法,也包括运行时画面的流畅性、与多人服务器连接的可靠性、用户输入的响应性,甚至由于移动设备和云下载的流行,它还包括终程序文件的大小。由于Unity等工具提供了大量有用的开发功能,还允许独立开发者访问,游戏开发的门槛已经大大降低了。然而,由于游戏行业的竞争激烈,玩家对游戏终品质的期望与日俱增,游戏的各方面应该能经得起玩家和评论家的考验。
性能优化的目标与用户体验密不可分。缺乏优化的游戏会导致低帧率、卡顿、崩溃、输入延迟、过长的加载时间、不一致以及令人不舒服的运行时行为,以及物理引擎的故障甚至过高的电池消耗(移动设备通常被忽略的指标)。只要遭遇上述问题之一,就是游戏开发者的噩梦,因为其他方面都做得很好,评论也只炮轰做得不好的一个方面。
性能优化的目标之一是化地利用可用资源,包括CPU资源,如消耗的CPU循环数、使用的主存空间大小(称为RAM),也包括GPU资源[GPU有自己的内存空间(称为VRAM)]、填充率、内存带宽等。然而,性能优化重要的目标是确保没有哪个资源不合时宜地导致性能瓶颈,优先级的任务得到优先执行。哪怕很小的、间歇性的停顿或性能方面的延迟都会破坏玩家的体验,打破沉浸感,限制我们尝试创建体验的潜力。另一个需要考虑的事项是,节省的资源越多,便能够在游戏中创造出更多的活动,从而产生更有趣、更生动的玩法。
同样重要的是,要决定何时后退一步,停止增强性能。在一个拥有无限时间和资源的世界里,总会有另一种方法让游戏变得更好、更快、更高效。在开发过程中,必须确定产品达到了可接受的质量水平。如果不这样做,就会重复实现那些很少或没有实际好处的变更,而每个变更都可能引入更多的bug。
判断一个性能问题是否值得修复的方法是回答“用户会注意到它吗?”。如果这个问题的答案是“不”,那么性能优化就是白费力气。软件开发中有句老话:
 过早的优化是万恶之源。
过早优化是在没有任何必要证据的情况下,为提高性能而重新编写和重构代码的主要原因。这可能意味着在没有显示存在性能问题的情况下进行更改,或者进行更改的原因是,我们只相信性能问题可能源于某个特定的领域,但没有证据证明的确存在该问题。
当然,编写代码时应该避免更直接、更明显的性能问题。然而,在项目末尾进行真正的性能优化将花费很多时间,而我们应该做好计划,以正确地改善项目,同时避免在没有可验证的情况下实施更昂贵和耗时的变更。这些错误使整个软件开发团队付出了代价,没有成效的工作时间令人沮丧。
《Unity 游戏优化(第2版)》介绍在Unity程序中检测和修复性能问题所需的工具、知识和技能,不管这些问题源于何处。这些瓶颈可能出现在CPU、GPU和RAM等硬件组件中,也可能出现在物理、渲染和Unity引擎等软件子系统中。
在每天充斥着高质量新游戏的市场中,优化游戏的性能将使游戏具有更大的成功率,提高了在市场上脱颖而出的机会。
《Unity 游戏优化(第2版)》内容
第1章探索Unity Profiler,研究剖析程序、检测性能瓶颈以及分析问题根源的一系列方法。
第2章学习Unity项目中C#脚本代码的实践,小化MonoBehaviour回调的开销,改进对象间的通信等。
第3章探索Unity的动态批处理和静态批处理系统,了解如何使用它们减轻渲染管线的负担。
第4章了解艺术资源的底层技术,学习如何通过导入、压缩和编码避免常见的陷阱。
第5章研究Unity内部用于3D和2D游戏的物理引擎的细微差别,以及如何正确组织物理对象,以提升性能。
第6章深入探讨渲染管线,以及如何提升在GPU或CPU上遭受渲染瓶颈的应用程序,如何优化光照、阴影、粒子特效等图形效果,如何优化着色器代码,以及一些用于移动设备的特定技术。
第7章关注VR和AR等新的娱乐媒介,还包括一些针对这些平台构建的程序所独有的性能优化技术。
第8章讨论检验Unity引擎、Mono框架的内部工作情况,以及在这些组件内部如何管理内存,以使程序远离过高的堆分配和运行时的垃圾回收。
第9章介绍Unity专家用于提升项目工作流和场景管理的大量有用技术。
阅读《Unity 游戏优化(第2版)》的条件
《Unity 游戏优化(第2版)》主要关注应用到Unity 2017上的特性和增强功能。《Unity 游戏优化(第2版)》讨论的很多技术可应用到Unity 5.x或更旧版本的项目中,但这些版本列出的特性可能会有所不同。这些差异会在适当的地方突出显示。
《Unity 游戏优化(第2版)》读者对象
《Unity 游戏优化(第2版)》面向对Unity的大多数特性富有经验的中高级Unity开发者,以及希望化游戏性能或解决特定瓶颈的开发人员。导致瓶颈的原因不管是持续的CPU负载、运行时CPU峰值、缓慢的内存访问、内存碎片、垃圾回收、糟糕的GPU填充率,还是内存带宽,《Unity 游戏优化(第2版)》都提供了识别问题根源所需的技术,并探索在程序中减少其影响的多种方式。
脚本和内存使用部分要求读者熟悉C#语言,着色器优化部分要求读者具有Cg基础。
约定
代码块的格式设置如下:
void Start() {
   GameLogic.Instance.RegisterUpdateableObject(this);
   Initialize();
}
 
protected virtual void Initialize() {
   // derived classes should override this method for initialization code,
and NOT reimplement Start()
}
  注意:
警告或重要提示出现在这样的方框中。

  提示:
提示和技巧出现在这样的方框中。

读者反馈
欢迎读者对《Unity 游戏优化(第2版)》进行反馈。告知我们你对《Unity 游戏优化(第2版)》的喜恶。读者的反馈对我们很重要,能帮助我们挖掘出你真正喜欢的主题。
可以通过电子邮件[email protected]给我们发送反馈,并在消息的标题中提及《Unity 游戏优化(第2版)》。
客户支持
读者既然购买了Packt图书,就可以从中获得更多的利益。
下载示例代码
可以在http://www.packtpub.com上使用自己的账号下载《Unity 游戏优化(第2版)》的示例代码。如果是在其他地方购买《Unity 游戏优化(第2版)》,就可以访问http://www.packtpub.com/support并注册,示例代码文件就可以通过邮件直接发送给你。
可以通过以下步骤下载代码文件:
(1) 使用自己的邮箱地址和密码在网站上登录或注册。
(2) 将鼠标移到顶部的SUPPORT上。
(3) 单击Code Downloads & Errata。
(4) 在Search框中输入书名。
(5) 选择找到的图书,下载代码文件。
(6) 通过下拉菜单选择购买《Unity 游戏优化(第2版)》的地方。
(7) 单击Code Download。
一旦下载完文件,确保使用版本的解压工具解压文件:
● Windows上使用WinRAR/7-Zip
● Mac上使用Zipeg/iZip/UnRarX
● Linux上使用PeaZip
《Unity 游戏优化(第2版)》的代码包也托管在GitHub上:https://github.com/ PacktPublishing/Unity-2017-Game-Optimization-Second-Edition,也可扫描封底二维码获取《Unity 游戏优化(第2版)》代码。
勘误
尽管我们已经尽了各种努力来保证内容的正确性,但错误总是难免的,如果你在《Unity 游戏优化(第2版)》中找到了错误,例如拼写错误或代码错误,请告诉我们,我们将非常感激。通过勘误表,可以让其他读者避免受挫,还有助于改进《Unity 游戏优化(第2版)》的后续版本。如果找到了错误,可以在http://www.packtpub.com/submit-errata上报告错误,选择图书,单击Errata Submission Form链接,并输入错误详情。一旦你提交的信息是正确的,就会被采纳,而勘误会上传到网站上,或添加到那个主题下已有的勘误表中。
为了查看之前提交的勘误,请浏览https://www.packtpub.com/books/content/support并在搜索框中输入书名。在Errata部分就会显示必要的信息。
版权
互联网上版权材料的盗版依然是所有媒体的问题。Packt非常重视对版权和许可证的保护。如果你在互联网上发现《Unity 游戏优化(第2版)》的任何形式的非法拷贝,请立即提供地址或网站名称,以便我们采取补救措施。
请通过[email protected]与我们联系,并提供可疑盗版材料的链接。
感谢你帮助保护作者,允许我们继续为你带来有价值的内容。
问题
如果你对《Unity 游戏优化(第2版)》任何方面存在疑问,可以通过[email protected]与我们联系,我们将尽努力解答问题。 

 

 

书摘插画
插图

插图

插图

插图

抢先评论了 “Unity 游戏优化(第2版)” 取消回复

评论

还没有评论。

相关产品

阅读更多
缺货

抠图+修图+调色+合成+特效Photoshop核心应用5项修炼

EUR €43.99
加入购物车

Adobe After Effects CC 高手之路

EUR €58.99
加入购物车

Adobe After Effects CC 2017经典教程 彩色版

EUR €63.99
阅读更多
缺货

中文版Photoshop CC 2018完全自学教程

EUR €58.99

东东购的宗旨是服务喜爱阅读中文书籍的海外人民,提供一个完善的购书平台,让国人不论何时何地都能沉浸在书香之中,读着熟悉的中文字,回忆着家乡的味道。


安全加密结账 安心网络购物 支持Paypal付款

常见问题

  • 货物配送
  • 退换货政策
  • 隐私政策
  • 联盟营销

客户服务

  • 联系东东
  • 关于东东
  • 帮我找书
  • 货物追踪
  • 会员登入

订阅最新的优惠讯息和书籍资讯

选择币别

EUR
USD
CAD
AUD
NZD
NOK
GBP
CHF
SEK
CNY
UAH
ILS
SAR
MXN
KRW
MYR
SGD
HUF
TRY
JPY
HKD
TWD
facebookinstagram
©2020 东东购 EasternEast.com

限时特卖:用“SALE15”优惠券全场书籍85折!可与三本88折,六本78折的优惠叠加计算。 忽略