第1章 游戏引擎介绍 3
1.1 游戏引擎简介 3
1.2 游戏引擎的选择 4
1.3 目前流行的游戏引擎 5
1.3.1 Unreal 3 Engine(虚幻引擎) 5
1.3.2 CryEngine 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的安装 10
1.4.3 Unity3D的注册 11
1.4.4 启动Unity3D 14
总结 15
练习题 15
第2章 3D游戏开发所需要的重要概念 19
2.1 3D图形学中的重要概念 19
2.1.1 坐标系 19
2.1.2 局部坐标系与世界坐标系(Local and World Coordinate 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 材质(Mate rials)、贴图(Textures)和着色器(Shaders) 23
2.1.8 物理引擎 24
2.1.9 碰撞检测(Collision Detection) 24
2.1.1 0凸面体与凹面体(Convex and Concave) 25
2.2 Unity3D中定义的重要概念 25
2.2.1 资源(Assets) 25
2.2.2 工程(Project) 25
2.2.3 场景(Scenes) 26
2.2.4 游戏对象(GameObject) 26
2.2.5 组件(Component) 26
2.2.6 脚本(Scripts) 27
2.2.7 预置(Prefabs) 27
总结 27
练习题 28
第3章 Unity3D界面介绍 31
3.1 Unity3D编辑器的布局 31
3.1.1 标题栏 31
3.1.2 主菜单栏 32
3.1.3 Project(项目资源窗口) 39
3.1.4 Hierarchy(层级窗口) 45
3.1.5 Scene(场景窗口) 47
3.1.6 Inspecto r(组件参数编辑窗口) 55
3.1.7 Game(游戏预览窗口) 59
3.1.8 Console(控制台) 60
3.2 自定义窗口布局 60
3.2.1 使用Unity3D内置的窗口布局功能 60
3.2.2 自定义窗口布局 61
总结 62
练习题 62
第4章 Unity3D脚本程序介绍 65
4.1 脚本程序初探 65
4.1.1 MonoDevelop脚本编辑器 66
4.1.2 第一个JavaScript脚本 67
4.2 JavaScript的语法 69
4.2.1 变量声明 69
4.2.2 函数声明 70
4.2.3 类与类的使用 73
总结 82
练习题 82
第5章 地形编辑器 85
5.1 地形编辑范例 85
5.1.1 创建地形 85
5.1.2 为地形绘制贴图纹理 89
5.1.3 为地形放置树木 91
5.1.4 为地形放置花草 95
5.1.5 为地形添加细节模型 96
5.1.6 其他设置 98
5.2 地形编辑的其他设置 99
5.2.1 设置地形的分辨率 99
5.2.2 设置最大树木的放置量 100
5.2.3 提高海平面 100
5.2.4 使用地形高度图 105
5.3 为场景添加水体、天空盒与太阳光 108
5.3.1 添加水体 108
5.3.2 添加天空盒 109
5.3.3 添加太阳光 110
5.3.4 为场景添加第一人称角色 110
5.4 树木创建器(Tree Creator) 111
5.4.1 植物的传统建模方法 111
5.4.2 树木创建器面板 113
5.4.3 制作银杏树 118
总结 124
练习题 124
第6章 光源 127
6.1 平行光(Directional Light) 127
6.1.1 创作太阳光 127
6.1.2 创作月光场景 133
6.2 点光源(Point Light) 135
6.2.1 创建夜景中的灯光 135
6.3 聚光灯(Spot Light) 141
6.3.1 使用聚光灯 141
6.4 使用程序控制灯光 144
6.5 镜头耀斑(Len Flare) 146
6.5.1 使用Flare资源 147
6.5.2 Flare资源的构成 148
总结 150
练习题 150
第7章 音频 153
7.1 音频剪辑(Audio Clip) 153
7.2 播放音频 154
7.2.1 音频监听(Audio Listener)组件 155
7.2.2 音频源(Audio Source)组件 155
7.2.3 音频混响区(Audio Reverb Zones)组件 157
7.2.4 音频滤波器(Audio Filter)组件 158
7.3 程序控制音频播放 162
7.4 音频管理器 168
总结 169
练习题 169
第8章 3D模型的导入 173
8.1 静态模型的导出 173
8.1.1 单位的设置 173
8.1.2 制作一个茶壶模型 174
8.1.3 模型导出之前需要注意的事项 180
总结 182
练习题 183
第9章 贴图、材质与Shader着色器 187
9.1 材质的构成要素 187
9.1.1 固有颜色 187
9.1.2 质感 188
9.1.3 光学属性 188
9.1.4 外部环境光线 189
9.2 贴图(Texture) 189
9.2.1 二维贴图(2D Texture) 189
9.2.2 立方体贴图(Cube Map) 197
9.2.3 视频贴图(MovieTexture) 200
9.2.4 渲染贴图(RenderTexture) 203
9.2.5 程序贴图(Procedural Materials) 207
9.3 材质(Material) 210
9.3.1 创建材质 211
9.3.2 内置材质类型 212
9.4 着色器(Shader) 219
9.4.1 着色器的作用 219
9.4.2 着色语言 222
9.4.3 Unity3D中的着色器 223
总结 226
练习题 226
第10章 碰撞盒与触发器 229
10.1 碰撞盒(Collider) 229
10.1.1 碰撞盒初探 229
10.1.2 网格碰撞盒(MeshCollider) 230
10.1.3 碰撞盒的阻挡作用 232
10.1.4 碰撞事件的运用 239
10.2 触发器 243
总结 249
练习题 249
第11章 物理模拟 253
11.1 刚体(Rigid Body) 253
11.2 物理材质(Physics Material) 255
11.2.1 反弹系数 255
11.2.2 摩擦系数 257
11.3 脚本控制刚体 258
11.4 物理关节(Joint) 263
11.4.1 铰链关节(HingeJoint) 263
11.4.2 弹簧关节(SpringJoint) 267
11.4.3 固定关节(FixedJoint) 269
11.4.4 角色关节(Characte rJoint) 271
11.5 布料模拟(Cloth) 277
11.5.1 交互式布料(Interactive Cloth)组件 277
11.5.2 布料渲染器(Cloth Rendere r)组件 278
11.5.3 交互式布料组件范例1——随风飘扬的国旗 279
11.5.4 交互式布料组件范例2——可撕裂布料 281
11.5.5 交互式布料组件范例3——皮球 282
11.5.6 蒙皮布料(Skinned Cloth)组件 283
11.5.7 蒙皮面片渲染器(Skinned Mesh Renderer)组件 285
总结 287
练习题 288
第12章 粒子系统 291
12.1 粒子系统模块 291
12.1.1 粒子初始化(Initial)与发射器(Emission)模块 291
12.1.2 粒子发射器形状(Shape)模块 292
12.1.3 速度(Velocity)控制模块 293
12.1.4 根据生命周期控制粒子受力(Force Over LifeTime)模块 293
12.1.5 颜色(Color)控制模块 294
12.1.6 大小(Size)控制面板 294
12.1.7 旋转(Rotation)控制模块 294
12.1.8 外力(External Forces)控制模块 295
12.1.9 碰撞(Collision)设置模块 295
12.1.1 0子粒子发射(Sub Emitters)模块 295
12.1.1 1粒子贴图切片动画(Texture Sheet Animation)模块 296
12.1.1 2粒子渲染控制(R enderer)模块 296
12.2 粒子属性编辑方式 297
12.2.1 传统参数控制方式 297
12.2.2 扩展参数控制方式 298
12.3 粒子系统范例 299
12.3.1 火焰 299
12.3.2 烟花 301
总结 310
练习题 310
第13章 动画系统 314
13.1 二足角色动画 314
13.1.1 二足角色资源的制作和导入 314
13.1.2 动画的导出与导入 316
13.1.3 使用Mecanim动画系统制作二足角色动画 316
13.1.4 状态机的融合树技术(BlendTree) 326
13.1.5 动画层(Animation Layer)与身体蒙版(Body Mask) 331
13.1.6 动画复用(Retargeting) 335
13.1.7 反向运动学(1K) 336
13.2 不规则骨骼动画 337
13.3 无骨骼对象动画 341
总结 348
练习题 348
第14章 游戏界面 351
14.1 使用GUI对象创建GUI 351
14.1.1 GUI Text对象 351
14.1.2 GUI Texture对象 354
14.2 使用Unity GUI脚本制作GUI 357
14.2.1 Unity GUI原理 357
14.2.2 GUI控件 360
14.3 自定义GUI外观 367
14.3.1 使用GUI Style 367
14.3.2 使用GUI Skin 370
14.4 布局(Layout) 370
14.4.1 固定布局与自动布局 370
14.4.2 排列控制 371
总结 374
练习题 375