Unity游戏优化(第3版)

Unity游戏优化(第3版)
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [英] , [意] (Davide Aversa)
2022-09
版次: 1
ISBN: 9787302613282
定价: 98.00
装帧: 其他
开本: 16开
纸张: 胶版纸
页数: 324页
字数: 397.000千字
9人买过
  • 主要内容:
      使用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最新版本,经常在纸上勾画关于游戏的构思。不久的将来,当时机成熟的时候(当他不再懈怠时),相信他的计划就会实现。 第Ⅰ部分  基本的脚本优化

    第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  将引用分配给预先

    存在的对象    48

    2.11.2  静态类      50

    2.11.3  单例组件   52

    2.11.4  全局消息传递系统   56

    2.12  禁用未使用的脚本和  对象      66

    2.12.1  通过可见性禁用对象 66

    2.12.2  通过距离禁用对象   67

    2.13  使用距离的平方而不是  距离   68

    2.14  最小化反序列化行为  69

    2.14.1  减小序列化对象 70

    2.14.2  异步加载序列化对象 70

    2.14.3  在内存中保存之前加载的序列化对象    70

    2.14.4  将公共数据移入ScriptableObject    71

    2.15  叠加、异步地加载

      场景    71

    2.16  创建自定义的

      Update()层  72

    2.17  本章小结     76

    第Ⅱ部分  图形优化

    第3章  批处理的优势 78

    3.1  Draw Call       79

    3.2  材质和着色器 81

    3.3  Frame Debugger    83

    3.4  动态批处理   85

    3.4.1  顶点属性    86

    3.4.2  网格缩放    87

    3.4.3  动态批处理总结 88

    3.5  静态批处理   89

    3.5.1  Static标记   89

    3.5.2  内存需求    90

    3.5.3  材质引用    90

    3.5.4  静态批处理的警告     90

    3.5.5  静态批处理总结 91

    3.6  本章小结 92

    第4章  优化艺术资源 93

    4.1  音频文件 93

    4.1.1  导入音频文件    94

    4.1.2  加载音频文件    94

    4.1.3  编码格式与品质级别 97

    4.1.4  音频性能增强    98

    4.2  纹理文件 101

    4.2.1  纹理压缩格式    101

    4.2.2  纹理性能增强    103

    4.3  网格和动画文件    111

    4.3.1  减少多边形数量 112

    4.3.2  调整网格压缩    112

    4.3.3  恰当使用Read-Write

    Enabled   112

    4.3.4  考虑烘焙动画    113

    4.3.5  合并网格    113

    4.4  Asset Bundle和Resource      114

    4.5  本章小结 115

    第5章  加速物理引擎 116

    5.1  物理引擎的内部工作情况    117

    5.1.1  物理和时间 117

    5.1.2  静态碰撞器和动态碰撞器  120

    5.1.3  碰撞检测    121

    5.1.4  碰撞器类型 122

    5.1.5  碰撞矩阵    124

    5.1.6  Rigidbody激活和休眠状态 124

    5.1.7  射线和对象投射 125

    5.1.8  调试物理    125

    5.2  物理性能优化 127

    5.2.1  场景设置    127

    5.2.2  适当使用静态碰撞器 129

    5.2.3  恰当使用触发体积     129

    5.2.4  优化碰撞矩阵    130

    5.2.5  首选离散碰撞检测     131

    5.2.6  修改固定更新频率     132

    5.2.7  调整允许的最大时间步长  133

    5.2.8  最小化射线投射和边界体积检查     133

    5.2.9  避免复杂的网格碰撞器     135

    5.2.10  避免复杂的物理组件 137

    5.2.11  使物理对象休眠 137

    5.2.12  修改处理器迭代次数 138

    5.2.13  优化布娃娃      139

    5.2.14  确定何时使用物理   141

    5.3  本章小结 142

    第6章  动态图形 143

    6.1  管线渲染 144

    6.1.1  GPU前端    145

    6.1.2  GPU后端    146

    6.1.3  光照和阴影 149

    6.1.4  多线程渲染 152

    6.1.5  低级渲染API     153

    6.2  性能检测问题 153

    6.2.1  分析渲染问题    153

    6.2.2  暴力测试    155

    6.3  渲染性能的增强    157

    6.3.1  启用/禁用GPU Skinning    157

    6.3.2  降低几何复杂度 157

    6.3.3  减少曲面细分    157

    6.3.4  应用GPU实例化      158

    6.3.5  使用基于网格的LOD 159

    6.3.6  使用遮挡剔除    160

    6.3.7  优化粒子系统    161

    6.3.8  优化Unity UI     163

    6.3.9  着色器优化 167

    6.3.10  使用更少的纹理数据 173

    6.3.11  测试不同的GPU纹理压缩格式     174

    6.3.12  最小化纹理交换 174

    6.3.13  VRAM限制      175

    6.3.14  照明优化   176

    6.3.15  优化移动设备的渲染

    性能 178

    6.4  本章小结 180

    第Ⅲ部分  高级优化

    第7章  虚拟现实和增强现实的优化  182

    7.1  XR技术概述 182

    7.2  XR开发 183

    7.3  XR中的性能增强 187

    7.3.1  物尽其用    187

    7.3.2  单通道立体渲染和多通道立体渲染  188

    7.3.3  应用抗锯齿 190

    7.3.4  首选前向渲染    190

    7.3.5  VR的图像效果  190

    7.3.6  背面剔除    191

    7.3.7  空间化音频 191

    7.3.8  避免摄像机物理

    碰撞 191

    7.3.9  避免欧拉角 192

    7.3.10  运动约束   192

    7.3.11  跟上最新发展   192

    7.4  本章小结 193

    第8章  掌握内存管理 194

    8.1  Mono平台     195

    8.1.1  内存域 196

    8.1.2.  垃圾回收   198

    8.2  代码编译 201

    8.2  代码编译 201

    8.3  分析内存 204

    8.3.1  分析内存消耗    204

    8.3.2  分析内存效率    205

    8.4  内存管理性能增强 205

    8.4.1  垃圾回收策略    205

    8.4.2  手动JIT编译     206

    8.4.3  值类型和引用类型     207

    8.4.4  字符串连接 214

    8.4.5  装箱    217

    8.4.6  数据布局的重要性     218

    8.4.7  Unity API中的数组   219

    8.4.8  对字典键使用

    InstanceID      220

    8.4.9  foreach循环 221

    8.4.10  协程   221

    8.4.11  闭包   221

    8.4.12  .NET库函数     222

    8.4.13  临时工作缓冲区 222

    8.4.14  对象池      223

    8.4.15  预制池      225

    8.4.16  IL2CPP优化     239

    8.4.17  WebGL优化     239

    8.5  本章小结 239

    第9章  面向数据的技术栈 240

    9.1  多线程的问题 241

    9.2  Unity的作业系统  244

    9.2.1  一个基本的作业 245

    9.2.2  一个较复杂的示例     247

    9.3  新的ECS       251

    9.4  Burst编译器  258

    9.5  本章小结 259

    第10章  使用GPU Instancing 优化大量动画对象    260

    10.1  应用场景     260

    10.2  实现思路     261

    10.3  主要实现步骤     261

    10.4  部分核心逻辑伪代码  261

    10.5  第一个版本——实现  262

    10.5.1  运行   262

    10.5.2  项目概览   265

    10.5.3  编辑器烘焙代码详解 265

    10.5.4  运行时代码和Shader详解      274

    10.5.5  C#代码详解      281

    10.6  第二个版本——优化  282

    10.6.1  AnimationInfo   283

    10.6.2  GPUInstancing

    Animation      283

    10.6.3  AnimatorBakeInfo     283

    10.6.4  AnimationBaker 284

    10.7  本章小结     289

    第11章  提示与技巧   290

    11.1  编辑器热键提示  291

    11.1.1  GameObject      291

    11.1.2  Scene窗口 291

    11.1.3  数组   292

    11.1.4  界面   293

    11.1.5  在编辑器内撰写文档 294

    11.2  编辑器界面提示  294

    11.2.1  脚本执行顺序   294

    11.2.2  编辑器文件      294

    11.2.3  Inspector 窗口   296

    11.2.4  Project窗口      297

    11.2.5  Hierarchy窗口  298

    11.2.6  Scene和Game窗口 299

    11.2.7  Play模式   299

    11.3  脚本提示     300

    11.3.1  一般情况   300

    11.3.2  特性   301

    11.3.3  日志   302

    11.3.4  有用的链接      302

    11.4  自定义编辑器脚本和 菜单提示 302

    11.5  外部提示     303

    11.6  其他提示     304

    11.7  本章小结     305

     

     
  • 内容简介:
    主要内容:
      使用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最新版本,经常在纸上勾画关于游戏的构思。不久的将来,当时机成熟的时候(当他不再懈怠时),相信他的计划就会实现。
  • 目录:
    第Ⅰ部分  基本的脚本优化

    第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  将引用分配给预先

    存在的对象    48

    2.11.2  静态类      50

    2.11.3  单例组件   52

    2.11.4  全局消息传递系统   56

    2.12  禁用未使用的脚本和  对象      66

    2.12.1  通过可见性禁用对象 66

    2.12.2  通过距离禁用对象   67

    2.13  使用距离的平方而不是  距离   68

    2.14  最小化反序列化行为  69

    2.14.1  减小序列化对象 70

    2.14.2  异步加载序列化对象 70

    2.14.3  在内存中保存之前加载的序列化对象    70

    2.14.4  将公共数据移入ScriptableObject    71

    2.15  叠加、异步地加载

      场景    71

    2.16  创建自定义的

      Update()层  72

    2.17  本章小结     76

    第Ⅱ部分  图形优化

    第3章  批处理的优势 78

    3.1  Draw Call       79

    3.2  材质和着色器 81

    3.3  Frame Debugger    83

    3.4  动态批处理   85

    3.4.1  顶点属性    86

    3.4.2  网格缩放    87

    3.4.3  动态批处理总结 88

    3.5  静态批处理   89

    3.5.1  Static标记   89

    3.5.2  内存需求    90

    3.5.3  材质引用    90

    3.5.4  静态批处理的警告     90

    3.5.5  静态批处理总结 91

    3.6  本章小结 92

    第4章  优化艺术资源 93

    4.1  音频文件 93

    4.1.1  导入音频文件    94

    4.1.2  加载音频文件    94

    4.1.3  编码格式与品质级别 97

    4.1.4  音频性能增强    98

    4.2  纹理文件 101

    4.2.1  纹理压缩格式    101

    4.2.2  纹理性能增强    103

    4.3  网格和动画文件    111

    4.3.1  减少多边形数量 112

    4.3.2  调整网格压缩    112

    4.3.3  恰当使用Read-Write

    Enabled   112

    4.3.4  考虑烘焙动画    113

    4.3.5  合并网格    113

    4.4  Asset Bundle和Resource      114

    4.5  本章小结 115

    第5章  加速物理引擎 116

    5.1  物理引擎的内部工作情况    117

    5.1.1  物理和时间 117

    5.1.2  静态碰撞器和动态碰撞器  120

    5.1.3  碰撞检测    121

    5.1.4  碰撞器类型 122

    5.1.5  碰撞矩阵    124

    5.1.6  Rigidbody激活和休眠状态 124

    5.1.7  射线和对象投射 125

    5.1.8  调试物理    125

    5.2  物理性能优化 127

    5.2.1  场景设置    127

    5.2.2  适当使用静态碰撞器 129

    5.2.3  恰当使用触发体积     129

    5.2.4  优化碰撞矩阵    130

    5.2.5  首选离散碰撞检测     131

    5.2.6  修改固定更新频率     132

    5.2.7  调整允许的最大时间步长  133

    5.2.8  最小化射线投射和边界体积检查     133

    5.2.9  避免复杂的网格碰撞器     135

    5.2.10  避免复杂的物理组件 137

    5.2.11  使物理对象休眠 137

    5.2.12  修改处理器迭代次数 138

    5.2.13  优化布娃娃      139

    5.2.14  确定何时使用物理   141

    5.3  本章小结 142

    第6章  动态图形 143

    6.1  管线渲染 144

    6.1.1  GPU前端    145

    6.1.2  GPU后端    146

    6.1.3  光照和阴影 149

    6.1.4  多线程渲染 152

    6.1.5  低级渲染API     153

    6.2  性能检测问题 153

    6.2.1  分析渲染问题    153

    6.2.2  暴力测试    155

    6.3  渲染性能的增强    157

    6.3.1  启用/禁用GPU Skinning    157

    6.3.2  降低几何复杂度 157

    6.3.3  减少曲面细分    157

    6.3.4  应用GPU实例化      158

    6.3.5  使用基于网格的LOD 159

    6.3.6  使用遮挡剔除    160

    6.3.7  优化粒子系统    161

    6.3.8  优化Unity UI     163

    6.3.9  着色器优化 167

    6.3.10  使用更少的纹理数据 173

    6.3.11  测试不同的GPU纹理压缩格式     174

    6.3.12  最小化纹理交换 174

    6.3.13  VRAM限制      175

    6.3.14  照明优化   176

    6.3.15  优化移动设备的渲染

    性能 178

    6.4  本章小结 180

    第Ⅲ部分  高级优化

    第7章  虚拟现实和增强现实的优化  182

    7.1  XR技术概述 182

    7.2  XR开发 183

    7.3  XR中的性能增强 187

    7.3.1  物尽其用    187

    7.3.2  单通道立体渲染和多通道立体渲染  188

    7.3.3  应用抗锯齿 190

    7.3.4  首选前向渲染    190

    7.3.5  VR的图像效果  190

    7.3.6  背面剔除    191

    7.3.7  空间化音频 191

    7.3.8  避免摄像机物理

    碰撞 191

    7.3.9  避免欧拉角 192

    7.3.10  运动约束   192

    7.3.11  跟上最新发展   192

    7.4  本章小结 193

    第8章  掌握内存管理 194

    8.1  Mono平台     195

    8.1.1  内存域 196

    8.1.2.  垃圾回收   198

    8.2  代码编译 201

    8.2  代码编译 201

    8.3  分析内存 204

    8.3.1  分析内存消耗    204

    8.3.2  分析内存效率    205

    8.4  内存管理性能增强 205

    8.4.1  垃圾回收策略    205

    8.4.2  手动JIT编译     206

    8.4.3  值类型和引用类型     207

    8.4.4  字符串连接 214

    8.4.5  装箱    217

    8.4.6  数据布局的重要性     218

    8.4.7  Unity API中的数组   219

    8.4.8  对字典键使用

    InstanceID      220

    8.4.9  foreach循环 221

    8.4.10  协程   221

    8.4.11  闭包   221

    8.4.12  .NET库函数     222

    8.4.13  临时工作缓冲区 222

    8.4.14  对象池      223

    8.4.15  预制池      225

    8.4.16  IL2CPP优化     239

    8.4.17  WebGL优化     239

    8.5  本章小结 239

    第9章  面向数据的技术栈 240

    9.1  多线程的问题 241

    9.2  Unity的作业系统  244

    9.2.1  一个基本的作业 245

    9.2.2  一个较复杂的示例     247

    9.3  新的ECS       251

    9.4  Burst编译器  258

    9.5  本章小结 259

    第10章  使用GPU Instancing 优化大量动画对象    260

    10.1  应用场景     260

    10.2  实现思路     261

    10.3  主要实现步骤     261

    10.4  部分核心逻辑伪代码  261

    10.5  第一个版本——实现  262

    10.5.1  运行   262

    10.5.2  项目概览   265

    10.5.3  编辑器烘焙代码详解 265

    10.5.4  运行时代码和Shader详解      274

    10.5.5  C#代码详解      281

    10.6  第二个版本——优化  282

    10.6.1  AnimationInfo   283

    10.6.2  GPUInstancing

    Animation      283

    10.6.3  AnimatorBakeInfo     283

    10.6.4  AnimationBaker 284

    10.7  本章小结     289

    第11章  提示与技巧   290

    11.1  编辑器热键提示  291

    11.1.1  GameObject      291

    11.1.2  Scene窗口 291

    11.1.3  数组   292

    11.1.4  界面   293

    11.1.5  在编辑器内撰写文档 294

    11.2  编辑器界面提示  294

    11.2.1  脚本执行顺序   294

    11.2.2  编辑器文件      294

    11.2.3  Inspector 窗口   296

    11.2.4  Project窗口      297

    11.2.5  Hierarchy窗口  298

    11.2.6  Scene和Game窗口 299

    11.2.7  Play模式   299

    11.3  脚本提示     300

    11.3.1  一般情况   300

    11.3.2  特性   301

    11.3.3  日志   302

    11.3.4  有用的链接      302

    11.4  自定义编辑器脚本和 菜单提示 302

    11.5  外部提示     303

    11.6  其他提示     304

    11.7  本章小结     305

     

     
查看详情
12
相关图书 / 更多
Unity游戏优化(第3版)
Unreal Engine 5完全自学教程
崔润(同步Sch)
Unity游戏优化(第3版)
Unity 2D游戏开发
[美]弗兰茨·兰辛格 (Franz Lanzinger)著 周子衿 译
Unity游戏优化(第3版)
Unity 3D游戏开发(第3版)
宣雨松
Unity游戏优化(第3版)
Unity实战(第3版)
[美]约瑟夫·霍金(Joseph Hocking)著 王冬 殷崇英 译
Unity游戏优化(第3版)
Unity3D虚拟现实应用开发实践())
刘龙
Unity游戏优化(第3版)
Unity互动媒体设计实例教程
赵志靖;周静
Unity游戏优化(第3版)
Unity 3D游戏开发
[美]弗兰茨·兰辛格 (Franz Lanzinger)著 周子衿 译
Unity游戏优化(第3版)
Unity实战技巧精粹:290秘技大全
[日]药师寺国安
Unity游戏优化(第3版)
Unity 3D游戏开发技术详解与典型案例
吴亚峰
Unity游戏优化(第3版)
Unreal Engine 5从入门到精通
左未
Unity游戏优化(第3版)
Unity游戏开发入门经典(第4版)
(美)迈克·吉格(Mike Geig)
Unity游戏优化(第3版)
Unity Shader入门与实战
黄志翔
您可能感兴趣 / 更多
Unity游戏优化(第3版)
康德与现代政治哲学
[英] 卡特琳·弗利克舒
Unity游戏优化(第3版)
权力的支柱(英国史前沿译丛)
[英]约翰·布鲁尔
Unity游戏优化(第3版)
如何改变世界-(马克思和马克思主义的传奇)
[英]埃里克·霍布斯鲍姆
Unity游戏优化(第3版)
秘史:英国情报机构的崛起
[英]西蒙·鲍尔
Unity游戏优化(第3版)
教育与教师教育(教师教育哲学译丛)
[英]理查德·S·彼得斯
Unity游戏优化(第3版)
羽下之鸟:鸟类骨骼解剖图鉴
[英]卡特里娜·范格鲁 著;沈成 译;未读 出品
Unity游戏优化(第3版)
非洲大陆简史(萤火虫书系)
[英]阿普里尔·马登
Unity游戏优化(第3版)
诺奖作家给孩子的阅读课·心智成长(3-9年级,莫言余华的文学启蒙,垫高阅读起点,提升作文能力)
[英]高尔斯华绥等
Unity游戏优化(第3版)
破茧:认知的深度突围(原书第4版) [英]理查德·泰普勒 [英]理查德·泰普勒
[英]理查德·泰普勒
Unity游戏优化(第3版)
月亮与六便士(名家新译本,别致精装,镂空设计。轨道与旷野之外,寻找第三条道路)
[英]毛姆 著 ,新经典 出品
Unity游戏优化(第3版)
大英帝国的兴衰:全景式俯瞰英国千年历史沧桑剧变,回首日不落帝国的初升、辉煌与没落
[英]理查德·达吉 著;邵晓燕 魏本超 译;斯坦威 出品
Unity游戏优化(第3版)
西方服饰与时尚文化:文艺复兴
[英]伊丽莎白·柯里(Elizabeth Currie)