实战项目篇 3
项目一 疯狂酷跑:跑酷类实战项目 3
1.游戏背景 3
2.功能介绍 3
3.技术架构 5
项目二 生化危机:射击类实战项目 7
1.游戏背景 7
2.功能介绍 7
3.技术架构 9
开发理论篇上部分 13
第1章 游戏历史与Unity发展概述 13
1.1 “钱途”无限的游戏开发领域 13
1.1.1 Unity版本快速迭代升级 14
1.1.2 Unity技术应用范围 15
1.1.3 强大的跨平台性 15
1.2 电子游戏发展史 16
1.3 游戏引擎与Unity的发展历程 19
1.3.1 什么是游戏引擎 19
1.3.2 游戏引擎的功能 20
1.3.3 为什么需要使用游戏引擎 21
1.3.4 游戏引擎的发展 21
1.3.5 Unity游戏引擎的特点 22
1.3.6 Unity游戏引擎的主要特性 22
1.3.7 Unity游戏引擎的发展历史 23
1.4 Unity安装 25
1.4.1 Unity下载与安装 25
1.4.2 Unity的资源商店(Asset Store) 26
第2章 Unity界面与3D模型入门 27
2.1 了解Unity编辑器界面 27
2.1.1 掌握Unity编辑器的布局与调整 28
2.1.2 了解Unity编辑器各个重要视图与作用 31
2.2 3D模型入门操作 33
2.2.1 3D模型的位移旋转与缩放 33
2.2.2 3D模型操作快捷方式 36
2.2.3 选择3D模型的“正”方向 36
2.2.4 使用属性窗口进行精确调整 38
2.3 开发Unity“Hello World” 39
2.4 本章练习与总结 43
第3章 3D模型基础 44
3.1 Unity编辑器进一步讲解 44
3.1.1 Unity菜单 44
3.1.2 项目(Project)视图 48
3.1.3 场景(Scene)视图 50
3.1.4 视图显示模式 53
3.1.5 场景视图的查看与导航 53
3.2 世界、局部与左手坐标系 53
3.2.1 现实世界的“世界坐标”与“局部坐标” 53
3.2.2 演示两种坐标的差异 54
3.2.3 使用脚本方式演示差异 55
3.2.4 什么是“左手坐标系” 55
3.2.5 使用控制台(Console)窗口进行代码调试 56
3.3 脚本知识入门 56
3.3.1 键盘与鼠标输入代码 56
3.3.2 环绕旋转 57
3.4 小项目开发:地球环绕太阳旋转 57
3.5 本章练习与总结 61
3.6 案例开发任务 62
第4章 地形编辑器 63
4.1 创建基本地形 63
4.1.1 绘制贴图纹理 67
4.1.2 制作各种地形 68
4.1.3 种植树木与花草 72
4.2 观察虚拟世界 72
4.3 扩展地形编辑 73
4.4 本章练习与总结 76
4.5 案例开发任务 76
第5章 光源 81
5.1 概述 81
5.2 光源的分类与重要参数 83
5.3 典型光源场景制作 84
5.4 本章练习与总结 87
5.5 案例开发任务 88
第6章 音频 89
6.1 概述 89
6.2 音频剪辑属性 90
6.3 音频监听与音频源组件 91
6.4 音频混响器与滤波器组件 92
6.5 本章练习与总结 93
6.6 案例开发任务 94
第7章 Unity脚本程序基础 96
7.1 Unity脚本编辑器介绍 96
7.1.1 什么是.Net框架 96
7.1.2 什么是Mono与MonoDevelop 97
7.1.3 什么是Visual Studio 97
7.2 脚本程序基础 98
7.2.1 建立脚本的重要注意事项 98
7.2.2 项目工程分层设计 99
7.2.3 如何更改脚本模版 99
7.3 Unity重要脚本函数 100
7.3.1 Unity事件函数 100
7.3.2 Untiy重要核心类学习 101
7.3.3 GameObject类 101
7.3.4 MonoBehaviour类 105
7.3.5 Transform类 106
7.3.6 Time类 106
7.4 本章练习与总结 107
7.5 案例开发任务 108
第8章 GUI 111
8.1 概述 111
8.2 GUI脚本控件 112
8.3 GUILayout自动布局 115
8.4 帧的概念 116
8.5 绘制贴图 117
8.6 GUI皮肤 118
8.7 本章练习与总结 120
8.8 案例开发任务 120
第9章 3D模型与动画制作 126
9.1 概述 127
9.2 3DMax软件基本使用 127
9.3 3D模型尺寸单位设置 130
9.4 3DMax模型制作与导出Unity流程 130
9.5 模型导出丢失贴图问题 134
9.6 3D文字的制作与动画 135
9.7 角色Legacy动画 136
9.8 Animation动画工具 138
9.9 自定义资源包的导入与导出 142
9.10 本章练习与总结 145
9.11 案例开发任务 145
第10章 物理学模拟(初级) 149
10.1 概述 149
10.2 刚体与碰撞体 150
10.3 物理材质 153
10.4 脚本控制刚体 154
10.5 本章练习与总结 155
10.6 案例开发任务 155
第11章 碰撞体与触发器 160
11.1 概述 160
11.2 碰撞体的分类与作用 161
11.3 碰撞检测事件函数 163
11.4 触发检测事件函数 164
11.5 本章练习与总结 166
11.6 案例开发任务 166
第12章 协程与调用函数 172
12.1 协程定义与功能 172
12.2 调用函数定义与功能 173
12.3 协程与调用函数的区别与适用范围 174
12.4 本章练习与总结 175
12.5 案例开发任务 175
第13章 数据传值技术 182
13.1 概述 182
13.2 SendMessage简单传值 183
13.3 SendMessage高级传值 185
13.4 本章练习与总结 186
13.5 案例开发任务 187
第14章 Unity核心类与脚本生命周期 195
14.1 概述 195
14.2 GameObject核心类 196
14.3 Transform核心类 197
14.4 Time核心类 198
14.5 MonoBehaviour核心类 198
14.6 Unity脚本生命周期 200
14.6.1 Unity事件函数调用顺序 201
14.6.2 事件函数禁用与启用规律 203
14.7 Unity伪多线程揭秘 206
14.8 Unity重要应用类 207
14.9 Unity输入管理器 209
14.10 本章练习与总结 211
14.11 案例开发任务 212
开发理论篇下部分 223
第15章 3D数学与3D图形学 223
15.1 3D数学 223
15.1.1 坐标系统 223
15.1.2 向量 228
15.2 3D图形学 236
15.3 Unity 3D图形渲染 237
15.3.1 网格过滤器(Mesh Fillter) 237
15.3.2 网格渲染器(Mesh Renderer) 238
15.3.3 蒙皮网格渲染器(Skinned Mesh Renderer) 239
15.4 贴图 239
15.4.1 二维贴图 240
15.4.2 立方体贴图(Cubemap) 245
15.4.3 视频贴图 246
15.4.4 渲染贴图 249
15.5 材质 251
15.5.1 材质球 251
15.5.2 材质球属性 251
15.5.3 材质球分类 251
15.6 着色器(Shader) 256
15.6.1 概述 256
15.6.2 基本原理:图形渲染管线 257
15.6.3 着色器的分类与基本结构 258
15.6.4 固定渲染管线着色器 262
15.6.5 表面着色器 263
15.7 本章练习与总结 272
第16章 物理学模拟(高级) 273
16.1 铰链关节 273
16.2 弹簧关节 275
16.3 固定关节 276
16.4 角色关节 277
16.5 布料模拟 278
16.6 本章练习与总结 279
第17章 粒子系统 280
17.1 概述 280
17.2 基本粒子组件属性 281
17.3 基本粒子系统示例 284
17.4 Unity内置粒子系统包 286
17.5 粒子系统的脚本调用方式 287
17.6 本章练习与总结 290
第18章 Mecanim动画系统 291
18.1 概述 291
18.2 制作Mecanim动画系统 292
18.2.1 步骤1:制作Avatar替身 292
18.2.2 步骤2:设置动画状态机(Animator Controller) 295
18.2.3 步骤3:设置动画循环 299
18.2.4 步骤4:使用代码控制角色动画 299
18.3 融合术技术 300
18.4 动画层与身体蒙版 304
18.5 动画复用技术 308
18.6 本章练习与总结 310
第19章 导航寻路 311
19.1 基本导航寻路 311
19.2 斜坡与跳跃 314
19.3 使用OffMeshLink组件 316
19.4 网格分层 317
19.5 Nav Mesh Obstacle组件 319
19.6 本章练习与总结 321
第20章 项目研发常用优化策略 322
20.1 遮挡剔除(Occlusion Culling) 322
20.2 层级细节(LOD) 326
20.3 项目调优工具数据分析器(Profiler) 329
20.4 项目优化策略 331
20.4.1 项目优化之Draw Call 332
20.4.2 项目优化之模型与图像方面 334
20.4.3 项目优化之光照与摄像机方面 336
20.4.4 项目优化之程序优化方面 338
20.4.5 项目优化之Unity系统设置方面 339
20.4.6 项目优化之良好开发与使用习惯 341
20.5 本章练习与总结 341
第21章 Unity游戏移植与手指触控识别 342
21.1 JDK安装与环境参数配置 342
21.1.1 下载与安装JDK 342
21.1.2 设置JDK环境 347
21.2 Android虚拟机的安装与配置 350
21.2.1 下载Android SDK 350
21.2.2 更新环境变量 351
21.2.3 配置Android SDK的API版本 351
21.2.4 配置Android SDK(模拟器) 353
21.2.5 启动Android SDK(模拟器) 355
21.3 Unity相应配置 356
21.4 手指触控识别 361
21.4.1 手指触控API 361
21.4.2 手指触控常见方式 362
21.5 本章练习与总结 365
第22章 光照烘焙技术 366
22.1 概述 366
22.2 静态光照烘焙(Lightmapping) 366
22.3 灯光探测器(Light Probes) 369
22.4 本章练习与总结 373
第23章 UGUI界面开发技术 374
23.1 概述 374
23.2 UGUI基础控件 376
23.2.1 Canvas画布控件 376
23.2.2 EventSystem控件 377
23.2.3 Panel控件 378
23.2.4 Text控件 379
23.2.5 Image控件 380
23.2.6 Button控件 383
23.2.7 Button事件系统 385
23.3 Anchor锚点与屏幕自适应 388
23.4 UGUI高级控件 389
23.4.1 Toggle控件 390
23.4.2 Slider控件 391
23.4.3 Scrollbar控件 392
23.4.4 Scroll Rect复合控件 393
23.4.5 TabPage标签页面 395
23.5 本章练习与总结 398
第24章 软件重构思想 399
24.1 软件重构的重要性 399
24.2 项目示例 400
24.3 本章练习与总结 403
第25章 射线 404
25.1 射线概述 404
25.2 项目示例讲解 405
25.2.1 射击场景开发 405
25.2.2 角色寻路开发 406
25.3 本章练习与总结 408
第26章 数据持久化技术 409
26.1 PlayerPrefs持久化技术 409
26.2 XML持久化技术 411
26.3 本章练习与总结 416
第27章 预加载与对象缓冲池技术 417
27.1 概述 417
27.2 简单对象缓冲池技术 418
27.3 高级对象缓冲池技术 423
27.4 本章练习与总结 431
第28章 Unity2D 432
28.1 概述 432
28.2 项目示例讲解 432
28.3 本章练习与总结 437
第29章 网络基础与资源动态加载技术 438
29.1 网络概述 438
29.2 多线程技术 439
29.2.1 多线程的定义 439
29.2.2 多线程的优先级 440
29.2.3 多线程的状态控制 441
29.2.4 多线程的线程同步 442
29.3 Socket(套接字)技术 444
29.3.1 网络基础知识 444
29.3.2 Socket定义 445
29.3.3 面向连接的Socket 445
29.3.4 无连接的Socket 446
29.3.5 同步Socket 446
29.3.6 异步Socket 448
29.4 网络下载WWW类 451
29.5 资源动态加载AssetBundle技术 453
29.6 本章练习与总结 458
附录A 全国Unity游戏研发职位笔试面试真题集锦 459
A.1:算法题库集锦 459
A.2:C#语言基础题库集锦 460
A.3:Unity基础理论题库集锦 461
A.4:Unity实践类题库集锦 463
A.5:逻辑推理/智力题库集锦 463
附录B Unity开发常见错误与分析 465
附录C 游戏开发职位简历模板 468