本书主要介绍Unity 2018的使用和游戏开发流程中涉及的各种知识。每一章的结构特别清晰,先综述该章要介绍的内容,然后一步步深入讲解,中间穿插着很多动手做的实践操作,可以让读者加深对某个概念、方法的理解,每章的最后还有一个小测验和一个稍微大一点的实践练习,用于巩固该章的学习内容。阅读每一章平均需要一个小时左右,每一章的内容都构建在前一章的基础之上。书中还穿插了四个实战项目,一来可以加强前面几章的学习,二来在整书阅读完毕之后,可以看到自己的读书成果。
译者序
前言
第1章 Unity介绍1
1.1 Unity安装1
1.2 熟悉Unity编辑器3
1.2.1 Project对话框4
1.2.2 Unity界面5
1.2.3 Project视图7
1.2.4 Hierarchy视图9
1.2.5 Inspector 视图10
1.2.6 Scene视图11
1.2.7 Game视图12
1.2.8 隆重介绍:工具条13
1.3 在Unity 场景视图中导航14
1.3.1 Hand工具14
1.3.2 Flythrough模式15
1.4 本章小结16
1.5 问答16
1.6 测验16
1.7 练习17
第2章 游戏对象18
2.1 维度和坐标系18
2.1.1 3D中的D18
2.1.2 使用坐标系19
2.1.3 世界坐标系和本地坐标系20
2.2 游戏对象21
2.3 变换22
2.3.1 平移22
2.3.2 旋转23
2.3.3 缩放25
2.3.4 变换的风险25
2.3.5 小工具的位置26
2.3.6 变换和嵌套的对象27
2.4 本章小结28
2.5 问答28
2.6 测验28
2.7 练习29
第3章 模型、材质和纹理30
3.1 模型的基础知识30
3.1.1 内置的3D对象31
3.1.2 导入模型32
3.1.3 模型和Asset Store33
3.2 纹理、着色器和材质35
3.2.1 纹理35
3.2.2 着色器36
3.2.3 材质36
3.2.4 着色器进阶37
3.3 本章小结39
3.4 问答39
3.5 测验40
3.6 练习40
第4章 地形和环境42
4.1 地形的生成42
4.1.1 将地形添加到项目中42
4.1.2 高度图制作43
4.1.3 Unity地形制作工具45
4.2 地形纹理47
4.2.1 导入纹理资源48
4.2.2 纹理化地形49
4.3 生成树和草51
4.3.1 绘制树木51
4.3.2 绘制青草52
4.3.3 地形设置54
4.4 角色控制器56
4.5 本章小结57
4.6 问答57
4.7 测验57
4.8 练习58
第5章 灯光和摄像机59
5.1 灯光59
5.1.1 烘焙灯光和实时灯光60
5.1.2 点光源60
5.1.3 聚光灯62
5.1.4 定向光63
5.1.5 利用对象创建灯光64
5.1.6 光晕64
5.1.7 Cookie65
5.2 摄像机66
5.2.1 摄像机介绍66
5.2.2 多个摄像机67
5.2.3 屏幕分拆和画中画68
5.3 图层70
5.3.1 图层介绍70
5.3.2 使用图层71
5.4 本章小结73
5.5 问答73
5.6 测验74
5.7 练习74
第6章 游戏案例1:Amazing Racer75
6.1 设计75
6.1.1 理念75
6.1.2 规则76
6.1.3 需求76
6.2 创建游戏世界77
6.2.1 制作地形77
6.2.2 添加环境78
6.2.3 雾效79
6.2.4 天空盒79
6.2.5 角色控制器80
6.3 游戏化80
6.3.1 添加游戏控制对象81
6.3.2 添加脚本82
6.3.3 将脚本连在一起84
6.4 游戏测试84
6.5 本章小结86
6.6 问答86
6.7 测验86
6.8 练习87
第7章 脚本(上)88
7.1 脚本88
7.1.1 创建脚本89
7.1.2 添加脚本91
7.1.3 分析脚本的基本内容92
7.1.4 using部分92
7.1.5 类声明部分93
7.1.6 类内容93
7.2 变量94
7.2.1 创建变量94
7.2.2 变量作用域95
7.2.3 公共和私有96
7.3 运算符96
7.3.1 算术运算符96
7.3.2 赋值运算符97
7.3.3 相等运算符98
7.3.4 逻辑运算符98
7.4 条件99
7.4.1 if语句99
7.4.2 if/else语句100
7.4.3 if/else if语句100
7.5 迭代102
7.5.1 while循环102
7.5.2 for循环102
7.6 本章小结103
7.7 问答103
7.8 测验104
7.9 练习104
第8章 脚本(下)105
8.1 方法105
8.1.1 方法简介106
8.1.2 编写方法107
8.1.3 使用方法109
8.2 输入110
8.2.1 输入的基础知识110
8.2.2 输入脚本111
8.2.3 特定键的输入112
8.2.4 鼠标输入113
8.3 访问局部组件114
8.3.1 使用GetComponent115
8.3.2 访问Transform115
8.4 访问其他对象116
8.4.1 寻找其他对象116
8.4.2 修改对象组件118
8.5 本章小结119
8.6 问答119
8.7 测验120
8.8 练习120
第9章 碰撞121
9.1 刚体121
9.2 启用碰撞122
9.2.1 碰撞体122
9.2.2 物理材质124
9.3 触发器125
9.4 光线投射127
9.5 本章小结129
9.6 问答129
9.7 测验130
9.8 练习130
第10章 游戏案例2:Chaos Ball131
10.1 设计131
10.1.1 理念131
10.1.2 规则132
10.1.3 需求132
10.2 竞技场132
10.2.1 创建竞技场133
10.2.2 纹理化133
10.2.3 创建超级弹性材质134
10.2.4 完成竞技场制作135
10.3 游戏实体135
10.3.1 玩家135
10.3.2 混乱球136
10.3.3 彩球138
10.4 控制对象138
10.4.1 球门139
10.4.2 Game Manager140
10.5 优化游戏141
10.6 本章小结142
10.7 问答142
10.8 测验142
10.9 练习143
第11章 预设144
11.1 预设的基础知识144
11.1.1 预设相关的术语145
11.1.2 预设的结构145
11.2 使用预设146
11.2.1 向场景中添加预设实例149
11.2.2 继承149
11.2.3 中断预设之间的关联151
11.2.4 通过代码实例化预设151
11.3 本章小结151
11.4 问答152
11.5 测验152
11.6 练习152
第12章 2D游戏工具154
12.1 2D游戏的基础知识154
12.2 正交投影摄像机156
12.3 添加精灵158
12.3.1 导入精灵158
12.3.2 精灵模式158
12.3.3 导入精灵大小160
12.4 绘制顺序160
12.4.1 排序图层161
12.4.2 层级的顺序162
12.5 2D物理163
12.5.1 2D刚体163
12.5.2 2D碰撞体163
12.6 本章小结164
12.7 问答164
12.8 测验165
12.9 练习165
第13章 2D瓦片地图167
13.1 瓦片地图的基础知识167
13.1.1 创建一张瓦片地图167
13.1.2 网格169
13.2 调色板169
13.3 瓦片171
13.3.1 配置精灵171
13.3.2 创建瓦片172
13.3.3 绘制瓦片173
13.3.4 自定义调色板175
13.4 瓦片地图和物理176
13.4.1 瓦片地图碰撞体176
13.4.2 使用Composite Collider
2D组件178
13.5 本章小结178
13.6 问答179
13.7 测验179
13.8 练习179
第14章 用户界面180
14.1 UI的基本原则180
14.2 画布181
14.2.1 Rect Transform182
14.2.2 锚点182
14.2.3 其他Canvas组件185
14.3 UI元素185
14.3.1 图片185
14.3.2 文本186
14.3.3 按钮187
14.4 画布的渲染模式190
14.4.1 Screen Space-Overlay190
14.4.2 Screen Space-Camera191
14.4.3 World Space191
14.5 本章小结192
14.6 问答192
14.7 测验192
14.8 练习193
第15章 游戏案例3:Captain Blaster195
15.1 设计195
15.1.1 理念195
15.1.2 规则196
15.1.3 需求196
15.2 游戏世界196
15.2.1 摄像机197
15.2.2 背景197
15.2.3 游戏实体198
15.2.4 玩家198
15.2.5 陨石200
15.2.6 子弹201
15.2.7 触发器201
15.2.8 UI202
15.3 控制流203
15.3.1 游戏管理器203
15.3.2 陨石脚本205
15.3.3 陨石生成206
15.3.4 DestroyOnTrigger脚本207
15.3.5 ShipControl脚本207
15.3.6 Bullet脚本209
15.4 优化210
15.5 本章小结210
15.6 问答211
15.7 测验211
15.8 练习211
第16章 粒子系统212
16.1 粒子系统的基本知识212
16.1.1 粒子212
16.1.2 Unity粒子系统212
16.1.3 粒子系统控制器213
16.2 粒子系统模块214
16.2.1 默认模块215
16.2.2 Emission模块216
16.2.3 Shape模块216
16.2.4 Velocity over Lifetime模块217
16.2.5 Limit Velocity over Lifetime模块217
16.2.6 Inherit Velocity模块217
16.2.7 Force over Lifetime模块217
16.2.8 Color over Lifetime 模块218
16.2.9 Color by Speed模块218
16.2.10 Size over Lifetime模块218
16.2.11 Size by Speed模块219
16.2.12 Rotation over Lifetime模块219
16.2.13 Rotation by Speed模块219
16.2.14 External Forces模块219
16.2.15 Noise模块219
16.2.16 Collision模块220
16.2.17 Triggers模块222
16.2.18 Sub Emitter模块222
16.2.19 Texture Sheet 模块222
16.2.20 Lights模块222
16.2.21 Trails模块223
16.2.22 Custom Data模块223
16.2.23 Renderer模块223
16.3 Curves Editor224
16.4 本章小结225
16.5 问答225
16.6 测验225
16.7 练习226
第17章 动画227
17.1 动画的基础知识227
17.1.1 绑定227
17.1.2 动画228
17.2 动画类型228
17.2.1 2D动画228
17.2.2 创建动画230
17.3 动画工具231
17.3.1 动画窗口231
17.3.2 创建一个新的动画232
17.3.3 记录模式234
17.3.4 Curves Editor236
17.4 本章小结237
17.5 问答237
17.6 测验237
17.7 练习238
第18章 Animator239
18.1 Animator的基础知识239
18.1.1 回顾rigging240
18.1.2 导入模型241
18.2 配置资源242
18.2.1 rig准备242
18.2.2 动画准备243
18.3 创建一个Animator247
18.3.1 Animator视图249
18.3.2 Idle动画249
18.3.3 参数251
18.3.4 状态和混合树251
18.3.5 过渡253
18.4 编写Animator的脚本253
18.5 本章小结254
18.6 问答255
18.7 测验255
18.8 练习255
第19章 时间线256
19.1 时间线的基础知识256
19.1.1 剖析时间线257
19.1.2 创建时间线257
19.2 使用时间线259
19.2.1 时间线窗口259
19.2.2 时间线轨道260
19.2.3 时间线剪辑261
19.3 复杂的控制263
19.3.1 在轨道上混合剪辑263
19.3.2 针对时间线编程264
19.4 本章小结266
19.5 问答266
19.6 测验266
19.7 练习267
第20章 游戏案例4:Gauntlet Runner268
20.1 设计268
20.1.1 理念268
20.1.2 规则268
20.1.3 需求269
20.2 游戏世界269
20.2.1 场景269
20.2.2 Gauntlet270
20.2.3 滚动地面271
20.3 实体272
20.3.1 充电装置272
20.3.2 障碍物273
20.3.3 触发器区域274
20.3.4 玩家274
20.4 控制管理器275
20.4.1 触发器区域脚本275
20.4.2 游戏管理器脚本276
20.4.3 Player脚本278
20.4.4 碰撞脚本279
20.4.5 出生点脚本280
20.4.6 将游戏的各个部分组合在一起281
20.5 改进的空间282
20.6 本章小结282
20.7 问答282
20.8 测验283
20.9 练习283
第21章 音频284
21.1 音频的基础知识284
21.1.1 音频的组成部分284
21.1.2 2D和3D音频285
21.2 音频源285
21.2.1 导入音频剪辑286
21.2.2 在Scene视图中测试声音287
21.2.3 3D音频288
21.2.4 2D音频289
21.3 音频脚本289
21.3.1 开始或者停止播放音频289
21.3.2 修改音频剪辑291
21.4 音频混频器291
21.4.1 创建音频混频器291
21.4.2 将音频发送到混频器292
21.5 本章小结293
21.6 问答293
21.7 测验293
21.8 练习294
第22章 移动开发296
22.1 为移动开发做准备296
22.1.1 设置环境297
22.1.2 Unity Remote297
22.2 加速计299
22.2.1 针对加速计的设计300
22.2.2 使用加速计300
22.2.3 多点触摸输入301
22.3 本章小结303
22.4 问答303
22.5 测验303
22.6 练习304
第23章 优化和部署305
23.1 管理场景305
23.1.1 建立场景顺序306
23.1.2 切换场景307
23.2 保存数据和对象308
23.2.1 保存对象308
23.2.2 保存数据309
23.3 Unity玩家设置311
23.3.1 跨平台设置311
23.3.2 各个平台的设置312
23.4 构建游戏313
23.4.1 构建设置313
23.4.2 游戏设置314
23.5 本章小结315
23.6 问答315
23.7 测验316
23.8 练习316
第24章 结束语317
24.1 成果317
24.2 19小时的学习时间317
24.2.1 4个完整的游戏案例318
24.2.2 超过50个场景319
24.3 下一步怎么走319
24.3.1 制作游戏319
24.3.2 与人打交道319
24.3.3 记录320
24.4 可供使用的资源320
24.5 本章小结320
24.6 问答321
24.7 测验321
24.8 练习321