第1章 基础知识 1
1.1 Unity简介 1
1.2 下载与安装 2
1.3 游戏界面对比 8
1.4 购买许可证 10
1.5 打包与发布 13
1.6 本章小结 16
第2章 编辑器的结构 17
2.1 游戏工程 17
2.1.1 创建工程 17
2.1.2 打开工程 19
2.2 Project视图 20
2.3 Hierarchy视图 23
2.4 Inspector视图 24
2.4.1 简介 24
2.4.2 平台设定 25
2.5 Scene视图 26
2.5.1 视图介绍 27
2.5.2 移动视图 28
2.5.3 场景工具 32
2.5.4 Scene视图控制条 33
2.6 Game视图 35
2.6.1 运行游戏 35
2.6.2 Game视图控制条 35
2.6.3 导出与导入 38
2.7 第一个游戏实例(拓展训练) 38
2.8 本章小结 42
第3章 GUI游戏界面 43
3.1 GUI高级控件 43
3.1.1 Label控件 43
3.1.2 Button控件 46
3.1.3 TextField控件 48
3.1.4 ToolBar控件 50
3.1.5 Slider控件 52
3.1.6 ScrollView控件 53
3.1.7 群组视图 55
3.1.8 窗口 56
3.1.9 GUI Skin 58
3.1.10 自定义风格组件 62
3.2 GUILayout游戏界面布局 64
3.2.1 GUI与GUILayout的区别 64
3.2.2 GUILayoutOption界面布局设置 66
3.2.3 线性布局 67
3.2.4 控件偏移 68
3.2.5 对齐方式 69
3.2.6 实例——添加与关闭窗口 71
3.2.7 设置字体 73
3.2.8 显示中文 75
3.3 2D贴图与帧动画 77
3.3.1 绘制贴图 77
3.3.2 绘制动画 79
3.3.3 实例——人物移动 81
3.3.4 实例——用Unity开发2D游戏 83
3.4 游戏实例——游戏主菜单 88
3.5 本章小结 90
第4章 Unity游戏脚本 91
4.1 MonoDevelop脚本编辑器 91
4.1.1 编辑器简介 91
4.1.2 调试 92
4.2 Unity脚本的生命周期 95
4.3 利用脚本来操作游戏对象 95
4.3.1 创建游戏对象 96
4.3.2 获取游戏对象 97
4.3.3 添加组件与修改组件 102
4.3.4 发送广播与消息 104
4.3.5 克隆游戏对象 105
4.3.6 脚本组件 106
4.4 用脚本来控制对象的变换 108
4.4.1 改变游戏对象的位置 109
4.4.2 旋转游戏对象 110
4.4.3 平移游戏对象 112
4.4.4 缩放游戏对象 113
4.5 用C#编写脚本 115
4.5.1 继承MonoBehaviour类 115
4.5.2 声明变量 116
4.5.3 调用方法 116
4.5.4 JavaScript与C#脚本之间的通信 119
4.6 工具类 122
4.6.1 时间 122
4.6.2 等待 123
4.6.3 随机数 124
4.6.4 数学 124
4.6.5 四元数 125
4.7 游戏实例——小地图的制作 126
4.8 本章小结 130
第5章 游戏元素 131
5.1 游戏地形 131
5.1.1 创建地形 131
5.1.2 地形参数 132
5.1.3 编辑地形 133
5.1.4 地形贴图 136
5.2 地形元素 140
5.2.1 树元素 140
5.2.2 草与网格元素 142
5.2.3 其他设置 144
5.3 光源 145
5.3.1 点光源(Point Light) 146
5.3.2 聚光灯 147
5.3.3 平行光 148
5.4 天空盒子 149
5.4.1 Skybox组件 149
5.4.2 在场景中添加天空盒子 151
5.5 常用编辑器组件 152
5.5.1 摄像机 152
5.5.2 摄像机的类型 153
5.5.3 定制导航菜单栏 155
5.5.4 预设 157
5.5.5 抗锯齿 159
5.6 游戏实例——摄像机切换镜头 162
5.7 本章小结 164
第6章 物理引擎 165
6.1 刚体 165
6.1.1 简单使用 165
6.1.2 物理管理器 167
6.1.3 力 168
6.1.4 碰撞与休眠 169
6.2 碰撞器 170
6.2.1 添加碰撞器 171
6.2.2 物理材质 171
6.3 角色控制器 173
6.3.1 第一人称 173
6.3.2 第三人称 175
6.3.3 控制组件 176
6.3.4 移动与飞行 178
6.3.5 碰撞监测 180
6.4 射线 182
6.4.1 射线的原理 182
6.4.2 碰撞监测 183
6.5 关节 185
6.5.1 关节介绍 185
6.5.2 实例——关节组件 186
6.6 粒子特效 188
6.6.1 粒子发射器 188
6.6.2 粒子动画 189
6.6.3 粒子渲染器 190
6.6.4 粒子效果实例 191
6.6.5 布料 193
6.6.6 路径渲染 196
6.7 游戏实例——击垮围墙 198
6.8 本章小结 200
第7章 输入与控制 201
7.1 键盘事件 201
7.1.1 按下事件 201
7.1.2 抬起事件 203
7.1.3 长按事件 205
7.1.4 任意键事件 205
7.1.5 实例——组合按键 206
7.2 鼠标事件 211
7.2.1 按下事件 211
7.2.2 抬起事件 212
7.2.3 长按事件 213
7.3 自定义按键事件 214
7.3.1 输入管理器 214
7.3.2 按键事件 215
7.3.3 按键轴 216
7.3.4 实例——观察模型 217
7.4 模型与动画 219
7.4.1 模型的载入 219
7.4.2 设置3D动画 220
7.4.3 播放3D动画 221
7.4.4 动画剪辑 222
7.4.5 动画的帧 224
7.5 GL图像库 226
7.5.1 绘制线 226
7.5.2 实例——绘制曲线 228
7.5.3 绘制四边形 230
7.5.4 绘制三角形 232
7.5.5 绘制3D几何图形 233
7.5.6 线渲染器 236
7.5.7 网格渲染 239
7.6 游戏实例——控制人物移动 241
7.7 本章小结 243
第8章 持久化数据 244
8.1 PlayerPrefs类 244
8.1.1 保存与读取数据 244
8.1.2 删除数据 245
8.1.3 实例——注册界面 245
8.2 自定义文件 247
8.2.1 文件的创建与写入 247
8.2.2 文件的读取 248
8.2.3 实例——读取笑话 250
8.3 应用程序 253
8.3.1 创建关卡 253
8.3.2 切换关卡 253
8.3.3 截屏 254
8.3.4 打开网页 255
8.3.5 退出游戏 256
8.4 资源数据库 256
8.4.1 加载资源 256
8.4.2 创建资源 257
8.4.3 创建文件夹 258
8.4.4 移动与复制 260
8.4.5 删除与刷新 260
8.4.6 实例——鼠标拖动模型 261
8.4.7 实例——鼠标拣选 264
8.5 游戏实例——接受任务 265
8.6 本章小结 270
第9章 多媒体与网络 271
9.1 游戏音频 271
9.1.1 音频介绍 271
9.1.2 添加音频 271
9.1.3 播放音频 273
9.2 游戏视频 275
9.2.1 创建视频 275
9.2.2 播放视频 276
9.2.3 GUI播放视频 278
9.3 网络 279
9.3.1 下载文件 279
9.3.2 自定义资源包 281
9.3.3 下载资源包 283
9.3.4 创建本地服务器 285
9.3.5 客户端连接服务器 289
9.3.6 实例——多人聊天服务器端 290
9.3.7 实例——多人聊天客户端 292
9.4 游戏实例——简单的网络游戏 297
9.5 本章小结 304
第10章 游戏实例——突出重围 305
10.1 游戏状态机 305
10.2 游戏界面 307
10.2.1 游戏主菜单 307
10.2.2 制作角色血条 311
10.2.3 制作图片数字 312
10.3 游戏逻辑 314
10.3.1 发射子弹与击打目标 314
10.3.2 敌人的AI 318
10.3.3 增加敌人预设 321
10.4 完整的游戏 322
10.5 本章小结 334