第1章 C#脚本编程基础 1
1.1 配置脚本开发环境 2
1.1.1 配置Visual Studio 2
1.1.2 配置MonoDevelop 6
1.1.3 脚本的创建 8
1.2 变量、数组与函数 9
1.2.1 变量的声明与使用 9
1.2.2 数组的声明与使用 11
1.2.3 函数的声明与使用 12
1.3 语句、表达式与运算符 14
1.3.1 语句 14
1.3.2 表达式 16
1.3.3 运算符 16
1.4 协程(Coroutine) 18
1.5 类与类的使用 21
1.6 输出调试信息 22
1.7 C#脚本示例 23
1.8 Unity脚本事件执行顺序 26
1.9 脚本模板与脚本编码 28
1.10 Unity 5脚本升级 29
第2章 JavaScript脚本编程基础 31
2.1 JavaScript脚本编程基础 32
2.2 变量、数组与函数 32
2.2.1 变量 32
2.2.2 数组 33
2.2.3 函数 35
2.3 表达式、语句与运算符 37
2.4 JavaScript脚本示例 39
2.5 JavaScript脚本与C#脚本的交互 41
第3章 星际航行游戏——Space Shooter 45
3.1 导入模型、贴图和材质 46
3.1.1 导入资源包文件 46
3.1.2 创建飞船对象 49
3.1.3 设置摄像机参数 50
3.1.4 添加图片背景 50
3.1.5 添加粒子背景效果 52
3.2 编写脚本代码 53
3.2.1 键盘控制飞船移动 53
3.2.2 实现射击行为(Shot) 57
3.2.3 添加小行星(Asteroid) 61
3.3 添加音频 69
3.3.1 添加碰撞爆炸音频 69
3.3.2 添加飞船射击音频 69
3.3.3 添加背景音效 70
3.4 添加计分文本 71
3.4.1 添加计分Text组件 71
3.4.2 添加计分功能 73
3.5 游戏结束与重新开始 74
3.5.1 添加游戏结束的Text组件 74
3.5.2 添加结束游戏的功能 75
3.5.3 添加重新开始的Text组件 76
3.5.4 添加重新开始游戏的功能 77
第4章 潜行游戏——Stealth 79
4.1 加载场景 80
4.1.1 创建场景 80
4.1.2 添加场景元素 80
4.1.3 添加灯光 82
4.1.4 烘焙场景Lightmaps 84
4.1.5 添加Tag管理类 87
4.1.6 添加转场效果 87
4.1.7 添加游戏控制器GameController 89
4.1.8 添加CCTV Camera 92
4.1.9 添加Laser Grid 94
4.2 导入和配置人物角色 97
4.2.1 导入角色模型 97
4.2.2 设置角色动画 98
4.2.3 创建动画参数管理类 99
4.2.4 添加控制角色运动功能 101
4.2.5 添加控制摄像机跟随的功能 104
4.3 主角与环境交互 107
4.3.1 添加控制开关台的功能 107
4.3.2 添加管理房间钥匙卡的功能 110
4.3.3 添加控制单开门的功能 112
4.3.4 添加控制双开门的功能 115
4.4 主角与敌人交互 116
4.4.1 添加管理角色生命值的功能 116
4.4.2 添加敌人角色模型 118
4.4.3 添加敌人自动搜索角色的功能 120
4.4.4 添加控制敌人运动功能 123
4.4.5 添加控制敌人射击的功能 126
第5章 粒子碰撞回调功能——Particle Callbacks 129
5.1 Shuriken立子系统介绍 130
5.2 加载场景 130
5.3 创建粒子效果 134
5.3.1 创建燃烧时冒烟的粒子效果 134
5.3.2 创建燃烧时火星四溅的粒子效果 139
5.3.3 火焰大小控制 140
5.3.4 创建洒水的粒子效果 143
5.3.5 控制洒水位置 146
5.4 碰撞回调函数解析 148
5.5 粒子碰撞回调函数应用案例 152
5.5.1 水滴与桶盖碰撞的处理 152
5.5.2 实现水滴与燃烧桶碰撞熄灭火焰的效果 155
第6章 Mecanim动画系统介绍——Mecanim Example Scenes 157
6.1 Mecanim动画系统简介 158
6.1.1 Mecanim动画系统的工作流 158
6.1.2 Mecanim动画系统中的术语 158
6.2 Mecanim动画系统常用API介绍 160
6.2.1 与动画状态控制相关的API 160
6.2.2 Character Controller(角色控制器) 160
6.3 加载场景 162
6.4 Animator Controller场景 163
6.4.1 创建场景 163
6.4.2 创建动画控制器 165
6.4.3 角色运动控制 167
6.4.4 摄像机运动控制 169
6.4.5 添加提示文字 171
6.5 Crowd Simulation场景 172
6.5.1 创建场景 172
6.5.2 创建动画控制器 173
6.5.3 生成人群 174
6.5.4 控制人群随机运动 175
6.6 Inverse Kinematics Example场景 177
6.6.1 创建场景 177
6.6.2 IK功能实现 178
6.7 Teddy BearBazooka场景 181
6.7.1 创建场景与动画控制器 181
6.7.2 Teddy对象随机运动的控制 183
6.7.3 抬放火箭炮控制 184
6.7.4 射击的控制 188
6.8 Nav Mesh Example场景 190
6.8.1 创建场景 190
6.8.2 创建动画控制器 192
6.8.3 创建导航网格 196
6.8.4 导航网格的寻路实现 197
第7章 Mecanim系统高级特性——Mecanim GDC2013 Sample Project 203
7.1 加载场景 204
7.1.1 创建场景 204
7.1.2 添加地板(Floor)和障碍物(Olbstacles) 204
7.1.3 添加圆木(Log)与冰棒(Popsicle) 206
7.1.4 添加角色(Player) 209
7.1.5 添加非玩家角色 215
7.1.6 添加子弹对象(Bullet) 218
7.2 角色运动的控制 218
7.2.1 由方向键控制角色运动 218
7.2.2 摄像机移动的控制 221
7.2.3 实现角色Slide、Vault的动作 221
7.2.4 实现角色抱着圆木运动 226
7.2.5 角色从边界掉落的控制 230
7.3 NPC巡逻与攻击的控制 231
7.3.1 NPC巡逻的控制 231
7.3.2 NPC攻击的控制 233
7.4 角色受伤的控制 238
7.5 动画录制与回放 241
第8章 移动设备输入控制——Star Trooper 247
8.1 加载场景 248
8.1.1 创建场景 248
8.1.2 修改工程配置 249
8.1.3 添加模型 251
8.1.4 添加旋转SunRing对象的功能 253
8.2 使用加速度计控制速度 253
8.2.1 移动设备输入控制的API 253
8.2.2 飞船运动控制 256
8.3 使用触摸屏控制射击 258
8.4 摄像机跟随控制 260
第9章 人物换装——Character Customization 265
9.1 加载场景 266
9.1.1 创建场景 266
9.1.2 添加场景元素 267
9.2 AssetBundle相关API介绍 268
9.3 打包换装部件 271
9.3.1 创建角色生成器插件 271
9.3.2 创建角色换装的基础AssetBundle 274
9.3.3 创建角色肢体部件的AssetBundle 276
9.3.4 创建材质与角色肢体部件AssetBundle的映射关系 279
9.4 加载换装部件 285
9.4.1 角色生成器类CharacterGenerator 285
9.4.2 角色生成框架 293
9.4.3 换装控制界面 295
第10章 第三人称射击游戏——Third Person MMO Controller 299
10.1 加载场景 300
10.2 添加场景元素 300
10.2.1 添加背景元素 300
10.2.2 添加主角模型 301
10.2.3 添加NPC模型 302
10.3 第三人称角色运动的控制 303
10.3.1 添加控制角色运动的功能 303
10.3.2 添加控制角色动画的功能 309
10.4 摄像机运动控制 315
10.5 NPC对象标签显示 321
第11章 赛车游戏——CarTutorial 325
11.1 加载场景 326
11.1.1 创建场景 326
11.1.2 场景元素介绍 327
11.2 加载赛车资源 329
11.2.1 载入赛车模型 329
11.2.2 设置赛车阴影效果 330
11.2.3 摄像机的移动控制 331
11.3 赛车控制 333
11.3.1 为赛车添加WheelCollider 334
11.3.2 赛车前进与转弯的控制 335
11.3.3 赛车车轮转动与转向效果实现 339
11.3.4 赛车倒车与刹车效果实现 340
11.3.5 赛车档位的控制 346
11.4 物理交互 348
11.4.1 赛车碰撞后翻车效果的实现 348
11.4.2 实现赛车行驶中刹车时滑痕的效果 350
第12章 原生2D系统游戏——2D Platformer 355
12.1 加载场景 356
12.1.1 创建场景 356
12.1.2 添加场景元素 357
12.2 创建Swan(天鹅)动画 361
12.2.1 生成天鹅的多个飞行姿态 362
12.2.2 创建Sprite Animation 363
12.2.3 天鹅随机飞动的实现 364
12.3 创建Mr.Bean(小豆人)动画 367
12.3.1 创建Mr.Bean对象 367
12.3.2 为Mr.Bean添加动画控制器 368
12.4 添加2D物理碰撞功能 370
12.4.1 为主角和前景元素添加2D物理碰撞功能 370
12.4.2 添加2D物理碰撞中的注意事项 372
12.5 游戏操控 373
12.5.1 主角运动的控制 373
12.5.2 主角射击的控制 376
12.5.3 主角与敌人对象交互的功能 377
12.5.4 游戏暂停的控制 380
第13章 新uGUI系统应用案例——Nightmares 381
13.1 新uGUI系统介绍 382
13.2 加载场景 386
13.2.1 创建场景 386
13.2.2 添加角色对象 387
13.2.3 添加控制角色运动的功能 388
13.2.4 配置摄像机参数 391
13.2.5 创建敌人对象 393
13.3 角色生命值管理 395
13.3.1 创建生命状态的GUI元素 395
13.3.2 角色生命值管理 399
13.4 角色射击和敌人生命值管理 401
13.4.1 角色射击的实现 401
13.4.2 敌人生命值管理 404
13.5 游戏分值的显示与敌人对象的动态创建 406
13.5.1 游戏分值显示 406
13.5.2 敌人对象的动态创建 407
13.6 结束游戏 410