第1章 核心UI——消息、菜单、积分榜和计数器 1
1.1 简介 1
1.2 显示“Hello World”文本消息 5
1.3 显示数字时钟 8
1.4 显示倒计时数字计数器 11
1.5 生成渐变消息 13
1.6 显示具有透视效果的3D文本消息 15
1.7 显示一幅图像 18
1.8 创建UI按钮并在场景间切换 20
1.9 在面板中组织图像并通过按钮调整面板深度 25
1.10 显示交互式UI滑块的数据值 29
1.11 基于UI Slider的图形化倒计时计数器 33
1.12 表示对象相对位置的显示雷达 36
1.13 利用Fungus开源对话系统创建UI 46
1.14 设置自定义鼠标指针图案 48
1.15 用于文本输入的Input Field 51
1.16 基于Toggle Groups的切换按钮和单选按钮 55
1.17 本章小结 58
第2章 道具栏UI 60
2.1 简介 60
2.2 创建简单的小型2D游戏——SpaceGirl 61
2.3 利用文本显示单一对象的拾取 65
2.4 利用图标显示单一对象的拾取道具 72
2.5 利用文本显示同一对象的多个拾取道具 75
2.6 利用多个图标显示同一对象的多个拾取道具 77
2.7 调整贴图尺寸并显示多个对象拾取道具图标 82
2.8 显示不同对象的多个拾取道具 84
2.9 使用Dictiona<>和枚举类型 89
2.10 利用UI Grid Layout Group生成多个图标显示 94
2.11 本章小结 109
第3章 2D动画 110
3.1 简介 110
3.2 水平方向上的精灵对象翻转 111
3.3 角色运动事件中的动画效果 112
3.4 创建3帧动画剪辑并生成连续动画 118
3.5 平台的跌落效果 120
3.6 利用精灵板序列创建动画剪辑 124
3.7 本章小结 127
第4章 创建贴图和材质 128
4.1 简介 128
4.1.1 创建并保存纹理贴图 129
4.1.2 概述 129
4.2 利用Standard Shader创建基本材质(Specular设置) 132
4.3 利用Specular和Metallic调整材质 140
4.4 向材质添加法线贴图 144
4.5 向材质添加透明度和自发射贴图 148
4.6 鼠标指针悬停时材质的高亮效果 153
4.7 向材质中添加细节贴图 156
4.8 材质透明度的淡出效果 160
4.9 在场景中播放视频 163
4.10 本章小结 166
第5章 相机 168
5.1 简介 168
5.2 生成画中画效果 169
5.3 在多部相机之间进行切换 174
5.4 根据屏幕内容生成纹理 178
5.5 相机的放大效果 182
5.6 显示小型地图 186
5.7 创建游戏中的监控相机 192
5.8 本章小结 196
第6章 光照效果 197
6.1 简介 197
6.2 使用光照和cookie纹理模拟阴天环境 200
6.3 向场景添加自定义反射贴图 205
6.4 生成激光瞄准器 208
6.5 利用反射探头实现周围物体的反射效果 214
6.6 利用Procedural Skybox和Directional Light设置环境 221
6.7 利用光照贴图和光探头照亮简单场景 224
6.8 本章小结 235
第7章 控制3D动画 236
7.1 简介 236
7.2 配置角色以及空闲动画 237
7.3 利用脚部运动和混合树移动角色 242
7.4 利用层和遮罩混合动画 249
7.5 将状态整合至子状态机中 255
7.6 通过脚本转换角色控制器 260
7.7 向动画角色中添加内容 265
7.8 通过动画事件投掷物体 268
7.9 向角色添加Ragdoll物理行为 272
7.10 角色的旋转和瞄准动作 277
7.11 本章小结 281
第8章 位置、运动和导航 282
8.1 简介 282
8.2 2D对象的控制 283
8.3 3D对象控制 287
8.4 计算最近(随机)生成点 292
8.5 在最近途径检测点重新生成对象 298
8.6 躲避障碍物时的NPC NavMeshAgent 300
8.7 基于序列路点的路径 307
8.8 利用集群方式控制对象组的运动 315
8.9 本章小结 320
第9章 音频 322
9.1 简介 322
9.2 音调与动画速度之间的匹配 323
9.3 利用Reverb Zones模拟声学环境 328
9.4 避免音频剪辑重新播放 330
9.5 在对象自动销毁前终止音频播放 332
9.6 利用Audio Mixer添加音量控制器 335
9.7 利用Snapshots生成动态音轨 342
9.8 利用Ducking实现音频的平衡效果 350
9.9 本章小结 356
第10章 与外部文件和设备协同工作 357
10.1 简介 357
10.2 通过Unity Default Resources加载外部资源文件 359
10.3 通过互联网下载方式加载外部资源文件 362
10.4 通过手动存储文件加载外部资源文件 365
10.5 利用静态属性保存和加载玩家数据 367
10.6 利用PlayerPrefs保存和加载玩家数据 371
10.7 保存游戏中的屏幕截图 373
10.8 利用PHP/MySQL设置排行榜 376
10.9 从文本文件中加载游戏数据 380
10.10 利用Git版本控制和GitHub托管管理Unity项目 385
10.11 通过Unity Cloud在多台设备上发布 392
10.12 本章小结 396
第11章 利用附加特性和优化操作改善游戏 397
11.1 简介 397
11.2 暂停游戏 399
11.3 实现慢动作效果 403
11.4 避免游戏运行于未知服务器上 407
11.5 状态驱动行为 409
11.6 通过状态设计模式实现事件驱动行为 416
11.7 销毁死亡对象以减少对象的数量 421
11.8 通过禁用对象减少处于开启状态的对象数量 424
11.9 令对象处于非活动状态 428
11.10 利用委托机制和事件改善效率 431
11.11 利用协同程序定期执行某些方法 436
11.12 利用协同程序将较为耗时的计算分布于多个帧中 438
11.13 计算最小和最大帧速率并估算性能 441
11.14 Unity性能分析器 443
11.15 DIY性能分析机制 446
11.16 缓存GameObject和组件的引用 448
11.17 利用LOD改善性能 458
11.18 减少绘制调用的次数 462
11.19 本章小结 464
第12章 编辑器扩展 465
12.1 简介 465
12.2 通过自定义Inspector UI修改道具类型(以及参数) 465
12.3 利用单次单击操作添加100个随机位置处的副本 478
12.4 通过进度条显示完成比率 482
12.5 实例化道具对象 483
12.6 本章小结 488