第1章 游戏引擎介绍 3
1.1 游戏引擎简介 3
1.2 游戏引擎的选择 4
1.3 目前流行的游戏引擎 5
1.3.1 虚幻引擎(Unreal4) 5
1.3.2 Cry Engine 6
1.3.3 寒霜引擎(Frosbite Engine) 6
1.3.4 Torque3D/2D游戏引擎 7
1.3.5 基于2D风格的Cocos2D游戏引擎 7
1.3.6 多平台发布的Unity3D游戏引擎 8
1.4 Unity3D游戏引擎的下载和安装 8
1.4.1 Unity3D下载 9
1.4.2 Unity3D的安装 11
1.4.3 Unity3D的注册 12
1.4.4 启动Unity3D 13
1.5 总结 14
1.6 练习题 14
第2章 3D游戏开发所需要的重要概念 19
2.1 3D图形学中的重要概念 19
2.1.1 坐标系 19
2.1.2 局部坐标系与世界坐标系(Local&Worldcoordinate System) 20
2.1.3 父子物体(Parent-Child) 20
2.1.4 向量(Vector) 21
2.1.5 摄像机(Camera) 22
2.1.6 多边形(Polygons)、边(Edges)、顶点(Vertices)和面片(Meshes) 22
2.1.7 材质(Materials)、贴图(Textures)和着色器(Shaders) 23
2.1.8 物理引擎 24
2.1.9 碰撞检测(Collision Detection) 24
2.1.10 凸面体与凹面体(Convex and Concave) 25
2.2 Unity3D中定义的重要概念 25
2.2.1 资源(Assets) 25
2.2.2 工程(Project) 26
2.2.3 场景(Scenes) 26
2.2.4 游戏对象(Game Object) 26
2.2.5 组件(Component) 26
2.2.6 脚本(Scripts) 27
2.2.7 预置(Prefabs) 27
2.3 总结 27
2.4 练习题 28
第3章 Unity3D界面介绍 31
3.1 Unity3D编辑器的布局 31
3.1.1 标题栏 31
3.1.2 主菜单栏 32
3.1.3 Project(项目资源)窗口 40
3.1.4 Hierarchy(层级窗口) 48
3.1.5 Scene场景窗口 49
3.1.6 Inspector组件参数编辑窗口 60
3.1.7 Game(游戏预览窗口) 66
3.1.8 Console(控制台) 67
3.2 自定义窗口布局 68
3.2.1 使用Unity3D内置的窗口布局功能 68
3.2.2 自定义窗口布局 71
3.3 总结 72
3.4 练习题 72
第4章 Unity3D脚本程序介绍 77
4.1 脚本程序初探 77
4.1.1 Mono Develop脚本编辑器 78
4.1.2 第一个C#Sc ript脚本 78
4.2 C#Script的语法 81
4.2 1 变量声明 81
4.2.2 函数声明 82
4.2.3 类与类的使用 85
4.3 Unity3D事件函数调用顺序 101
4.3.1 基本事件函数 101
4.3.2 针对游戏对象当前状态的事件函数 104
4.3.3 Unity3D事件运行顺序 105
4.4 总结 105
4.5 练习题 106
第5章 地形编辑器 109
5.1 地形编辑范例 109
5.1.1 创建地形 109
5.1.2 为地形绘制贴图纹理 113
5.1.3 为地形放置树木 117
5.1.4 为地形放置花草 121
5.1.5 为地形添加细节模型 122
5.1.6 其他设置 125
5.2 地形编辑的其他设置 126
5.2.1 设置地形的分辨率 126
5.2.2 提高海平面 127
5.2.3 使用地形高度图 133
5.3 为场景添加水体、天空盒与太阳光 137
5.3.1 添加水体 137
5.3.2 添加天空盒 139
5.3.3 添加太阳光 140
5.3.4 为场景添加第一人称角色 141
5.4 树木创建器(Tree Creator) 142
5.4.1 植物的传统建模方法 142
5.4.2 树木创建器面板 144
5.4.3 制作银杏树 149
5.5 World Machine制作地形 158
5.5.1 World Machine制作火山口 158
5.5.2 导入Unity 182
5.6 Speedtree 184
5.6.1 树的基本结构 185
5.6.2 对柳树的形态结构分析 185
5.6.3 利用Speed Tree创建柳树模型 186
5.6.3 Speed Tree模型导入Unity5 193
5.6.4 为地形使用笔刷放置Speed Tree树模型 194
5.7 总结 195
5.8 练习题 195
第6章 3D模型的导入 199
6.1 静态模型的导出 199
6.1.1 单位的设置 199
6.1.2 制作一个茶壶模型 200
6.1.3 模型导出之前需要注意的事项 207
6.2 总结 209
6.3 练习题 210
第7章 贴图、材质与Shader着色器 213
7.1 贴图(Texture) 213
7.2 PBS关键属性介绍 215
7.2.1 固有颜色(Albedo) 215
7.2.2 金属度(Metallic) 216
7.2.3 光滑度(Smoothness) 216
7.3 PBS其他属性介绍 217
7.3.1 法线贴图(Normal Map) 217
7.3.2 高度贴图(Height Map) 218
7.3.3 遮挡贴图(Occlusion Map) 218
7.3.4 发光属性(Emission) 219
7.3.5 菲涅尔效果(Fresnel Effect) 219
7.4 PBS范例 220
7.5 着色器(Shader) 226
7.5.1 着色器的作用 226
7.5.2 着色语言 230
7.5.3 Unity3D中的着色器 230
7.6 总结 235
7.7 练习题 235
第8章 光源 239
8.1 平行光(Directional Light) 239
8.1.1 太阳光 240
8.1.2 月光 242
8.2 点光源(Point Light) 244
8.2.1 使用点光源 245
8.3 聚光灯(Spot Light) 248
8.3.1 使用聚光灯 248
8.4 三种灯光的属性说明 250
8.5 使用程序控制灯光 250
8.6 总结 253
8.7 练习题 253
第9章 音频 257
9.1 音频剪辑(Audio Clip) 257
9.2 播放音频 259
9.2.1 音频监听组件(Audio Listener) 259
9.2.2 音频源组件(Audio Source) 260
9.2.3 音频混合器(Audio Mixer) 261
9.2.4 音频过滤器/效果器(Audio Filters/Audio Effects) 262
9.2.5 回响空间(Reverb Zones) 263
9.3 Audio Mixer 264
9.3.1 Audio Mixe r原理 264
9.3.2 使用AudioMixer 265
9.4 总结 284
9.5 练习题 284
第10章 碰撞盒与触发器 287
10.1 碰撞盒(Collider) 287
10.1.1 碰撞盒初探 288
10.1.2 网格碰撞盒(Mesh Collider) 289
10.1.3 碰撞盒的阻挡作用 291
10.1.4 碰撞事件的运用 301
10.2 触发器 308
10.3 总结 317
10.4 练习题 317
第11章 3D物理模拟 321
11.1 刚体(Rigid Body) 321
11.2 物理材质(Physics Material) 323
11.2.1 反弹系数 324
11.2.2 摩擦系数 326
11.3 脚本控制刚体(Control Rigidbody by Script) 328
11.4 布料(Cloth) 331
11.4.1 飘扬的旗帜 331
11.4.2 软皮球 334
11.5 物理关节(Physics Joint) 336
11.5.1 铰链关节(Hinge Joint) 336
11.5.2 固定关节(Fixed Joint) 343
11.5.3 弹簧关节(Spring Joint) 346
11.5.4 角色关节(Character Joint) 352
11.6 总结 362
11.7 练习题 362
第12章 2D物理模拟 365
12.1 2D刚体(Rigidbody 2D) 365
12.2 2D碰撞盒(Collider 2D) 366
12.3 2D物理材质(Physics Material 2D) 367
12.4 2D关节(2D Joints) 368
12.4.1 2D距离关节(Distance Joint 2D) 368
12.4.2 2D弹簧关节(Spring Joint 2D) 373
12.4.3 2D固定关节(Fixed Joint 2D) 375
12.4.4 2D摩擦关节(Friction Joint 2D) 377
12.4.5 2D铰链关节(Hinge Joint 2D) 378
12.4.6 2D相对关节(Relative Joint 2D) 381
12.4.7 2D滑块关节(Slider Joint 2D) 383
12.4.8 2D目标关节(Target Joint 2D) 386
12.4.9 2D车轮关节(Wheel Joint 2D) 387
12.5 2D恒力(Constant Force 2D) 391
12.6 2D区域效应(Area Effector 2D) 391
12.7 2D浮力效应(Buoyancy Effector 2D) 393
12.8 2D点效应(Point Effector 2D) 395
12.9 2D平台效应(Platform Effector 2D) 397
12.10 2D表面效应(Surface Effector 2D) 399
12.11 总结 400
12.12 练习题 401
第13章 动画系统 406
13.1 二足角色动画 406
13.1.1 二足角色资源的制作和导入 406
13.1.2 动画的导出与导入 408
13.1.3 使用Mecanim动画系统制作二足角色动画 408
13.1.4 状态机的融合树技术(Blend Tree) 420
13.1.5 状态机的动画层(Animation Layer)与身体蒙版(Body Mask) 427
13.1.6 动画复用(Retargeting) 431
13.1.7 反向运动学(IK) 431
13.2 不规则骨骼动画 434
13.3 无骨骼对象动画 439
13.4 2D动画 447
13.4.1 帧动画 447
13.4.2 用拆分的方法制作2D动画 459
13.5 总结 462
13.6 练习题 462
第14章 粒子系统 465
14.1 粒子系统模块 465
14.1.1 粒子初始化(Initial)与发射器(Emission)模块 466
14.1.2 粒子发射器形状(Shape)模块 467
14.1.3 速度(Velocity)控制模块 468
14.1.4 根据生命周期控制粒子受力(Force Over LifeTime)模块 469
14.1.5 颜色(Color)控制模块 470
14.1.6 大小(Size)控制模块 470
14.1.7 旋转(Rotation)控制模块 471
14.1.8 外力(Exte rnal Forces)控制模块 471
14.1.9 碰撞(Collision)设置模块 472
14.1.10 子粒子发射(Sub Emitte rs)模块 473
14.1.11 粒子贴图切片动画(Texture Sheet Animation) 473
14.1.12 粒子渲染(Renderer)控制模块 474
14.2 粒子属性编辑方式 475
14.2.1 传统参数控制方式 475
14.2.2 扩展参数控制方式 477
14.3 粒子系统范例 478
14.3.1 火焰 478
14.3.2 冰技能特效 483
14.3.3 烟花 501
14.4 使用代码控制粒子系统 519
14.5 总结 523
14.6 练习题 523
第15章 UGUI 527
15.1 UGUI组件介绍 527
15.1.1 Canvas相关组件 527
15.1.2 RectTransform组件 532
15.1.3 视觉(Visual)相关UI控件 534
15.1.4 UI效果(Effect)相关组件 536
15.1.5 交互(Interaction)相关控件 537
15.2 UGUI实例 544
15.2.1 创建开始界面 544
15.2.2 游戏菜单界面 546
15.2.3 角色面板和背包系统的背景 550
15.2.4 角色面板 551
15.2.5 创建背包系统 552
15.2.6 关卡选择界面 555
15.3 总结 562
15.4 练习题 562
第16章 人工智能 565
16.1 寻路功能 565
16.2 Nav Mesh Agent 572
16.2.1 Nav Mesh Agent参数介绍 572
16.2.2 通过脚本修改参数 575
16.3 Off Mesh Link 579
16.3.1 自动添加分离网格链接 580
16.3.2 手动添加分离网格链接 581
16.4 Nav Mesh Obstacle 582
16.5 分层寻路 584
16.6 总结 588
16.7 练习题 588