目 录
第 1章 Unity基础及集成开发环境的搭建 1
1.1 Unity基础知识概览 1
1.1.1 初识Unity 1
1.1.2 Unity广阔的市场前景 1
1.1.3 Unity的特点 1
1.2 Unity集成开发环境的搭建 3
1.2.1 Windows平台下Unity的下载及安装 3
1.2.2 目标平台的SDK与Unity的集成 5
1.3 第 一个Unity程序 6
1.4 本书案例的导入及运行 10
1.5 本章小结 13
第 2章 Unity集成开发环境详解 14
2.1 Unity集成开发环境 14
2.1.1 Unity集成开发环境的整体
布局 14
2.1.2 菜单栏 15
2.1.3 工具栏 15
2.1.4 Scene窗口 16
2.1.5 Game窗口 18
2.1.6 Hierarchy面板 19
2.1.7 Project面板 20
2.1.8 Inspector面板 21
2.1.9 状态栏与控制台 21
2.1.10 Animation窗口 21
2.1.11 动画控制器编辑窗口 21
2.2 菜单栏 21
2.2.1 File 22
2.2.2 Edit 23
2.2.3 Assets 28
2.2.4 GameObject 31
2.2.5 Component 34
2.2.6 Window 38
2.3 本章小结 40
第3章 Unity脚本程序开发 41
3.1 Unity脚本概述 41
3.2 Unity中C#脚本的注意事项 41
3.3 Unity脚本的基础语法 43
3.3.1 对游戏对象的常用操作 43
3.3.2 记录时间 43
3.3.3 访问游戏对象组件 44
3.3.4 访问其他游戏对象 45
3.3.5 向量 47
3.3.6 成员变量 48
3.3.7 实例化游戏对象 49
3.3.8 协同程序及其中断 50
3.3.9 一些重要的类 50
3.3.10 特定文件夹 55
3.3.11 脚本编译 56
3.3.12 与销毁相关的方法 56
3.3.13 性能优化 58
3.4 综合案例 58
3.4.1 案例策划及准备工作 59
3.4.2 创建项目及搭建场景 59
3.4.3 飞机控制脚本的编写 60
3.4.4 摄像机跟随脚本的编写 63
3.5 本章小结 64
第4章 Unity图形用户界面基础 65
4.1 图形用户界面 65
4.1.1 图形用户界面的控制变量 65
4.1.2 图形用户界面中的常用控件 71
4.1.3 图形用户界面中的常用方法 86
4.1.4 图形用户界面控件综合案例 93
4.2 UGUI系统 95
4.2.1 UGUI系统的基础知识 95
4.2.2 UGUI控件 97
4.2.3 UGUI布局管理器及相关组件介绍 104
4.2.4 UGUI中不规则形状的按钮的碰撞检测 106
4.2.5 屏幕自适应和锚点 107
4.2.6 UGUI综合案例—音乐播放器的UI搭建 107
4.3 Prefab资源的应用 113
4.3.1 Prefab资源的创建 113
4.3.2 利用Prefab资源实例化游戏对象 114
4.3.3 Prefab的编辑 114
4.4 常用的输入对象 115
4.4.1 Touch对象 115
4.4.2 Input对象 117
4.5 本章小结 121
第5章 物理引擎 122
5.1 刚体 122
5.1.1 刚体特性 122
5.1.2 物理管理器 129
5.2 铰接体 130
5.2.1 铰接体的属性 131
5.2.2 铰接体的创建 131
5.2.3 运行效果 135
5.3 碰撞体 135
5.3.1 碰撞体的添加 136
5.3.2 碰撞过滤 137
5.3.3 触发器 139
5.3.4 碰撞检测 139
5.3.5 物理材质 140
5.3.6 碰撞体交互 141
5.4 关节 142
5.4.1 铰链关节的属性 142
5.4.2 铰链关节的创建 143
5.4.3 固定关节的属性 144
5.4.4 固定关节的创建 144
5.4.5 弹簧关节的属性 144
5.4.6 弹簧关节的创建 145
5.4.7 角色关节的属性 145
5.4.8 角色关节的创建 146
5.4.9 可配置关节的属性 146
5.4.10 可配置关节的创建 147
5.4.11 关节综合案例—机械手 148
5.5 交通工具 152
5.5.1 车轮碰撞体的添加 153
5.5.2 车轮碰撞体的属性 153
5.5.3 车轮碰撞体的应用 153
5.6 布料 157
5.6.1 蒙皮网格渲染器属性 158
5.6.2 布料属性 158
5.6.3 布料的简单案例 159
5.7 力场 160
5.7.1 力场组件的属性 160
5.7.2 力场综合案例 161
5.8 角色控制器 161
5.8.1 角色控制器组件的属性 161
5.8.2 角色控制器的案例 162
5.9 粒子系统 162
5.9.1 粒子系统的简介 162
5.9.2 粒子系统的属性 163
5.9.3 通过脚本控制粒子系统 173
5.9.4 粒子系统的综合应用 180
5.10 物理引擎在动画系统中的使用 185
5.10.1 场景的搭建 185
5.10.2 脚本的开发 187
5.10.3 运行效果 187
5.11 物理引擎综合案例 188
5.11.1 场景的搭建 188
5.11.2 界面的搭建 192
5.11.3 脚本的开发 193
5.11.4 案例开发总结 195
5.12 本章小结 196
第6章 着色器和着色语言 197
6.1 初识着色器 197
6.1.1 着色器概述 197
6.1.2 材质、着色器与贴图 198
6.1.3 ShaderLab语法基础 198
6.1.4 着色器中涉及的各种空间概念 204
6.2 渲染管线 206
6.2.1 OpenGL渲染管线 206
6.2.2 DirectX渲染管线 212
6.2.3 Unity可编程渲染阶段 213
6.3 着色器的3种形态 213
6.3.1 固定管线着色器 213
6.3.2 顶点片元着色器 214
6.3.3 表面着色器 219
6.4 表面着色器的基础知识及应用 220
6.4.1 表面着色器的基础知识 220
6.4.2 通过表面着色器实现体积雾 225
6.5 渲染通道的通用指令 230
6.5.1 设置LOD数值 230
6.5.2 渲染队列 232
6.5.3 混合操作 233
6.5.4 Alpha测试 235
6.5.5 深度测试 236
6.5.6 模板测试 239
6.5.7 通道遮罩 242
6.5.8 面的剔除操作 243
6.5.9 抓屏操作 245
6.6 曲面细分着色器 246
6.6.1 固定数量的曲面细分 246
6.6.2 基于距离的曲面细分 248
6.6.3 基于边缘长度的曲面细分 249
6.6.4 Phong曲面细分 251
6.7 几何着色器 252
6.8 Standard Shader 254
6.8.1 什么是基于物理的着色 254
6.8.2 材质编辑器 254
6.9 着色器的组织、复用和移动平台上的优化 256
6.9.1 着色器的组织和复用 257
6.9.2 移动平台上的优化 261
6.10 Shader Graph 263
6.10.1 Shader Graph环境安装 263
6.10.2 创建一个Shader Graph 263
6.11 着色器综合案例 263
6.11.1 着色器综合案例一 264
6.11.2 着色器综合案例二 278
6.12 本章小结 281
第7章 常用着色器特效 282
7.1 顶点动画 282
7.1.1 基本原理 282
7.1.2 开发步骤 283
7.2 纹理动画 285
7.2.1 基本原理 285
7.2.2 开发步骤 286
7.3 边缘发光 287
7.3.1 基本原理 287
7.3.2 开发步骤 287
7.4 描边效果 289
7.4.1 基本原理 289
7.4.2 开发步骤 290
7.5 遮挡透视效果 292
7.5.1 基本原理 292
7.5.2 开发步骤 292
7.6 菲涅尔效果 293
7.6.1 基本原理 293
7.6.2 立方体纹理技术 294
7.6.3 开发步骤 294
7.7 高斯模糊 297
7.7.1 基本原理 297
7.7.2 开发步骤 298
7.8 Bloom效果 301
7.8.1 基本原理 301
7.8.2 开发步骤 301
7.9 景深 304
7.9.1 基本原理 304
7.9.2 开发步骤 304
7.10 积雪效果 306
7.10.1 基本原理 306
7.10.2 开发步骤 307
7.11 浴室玻璃 309
7.11.1 基本原理 309
7.11.2 开发步骤 309
7.12 消融效果 311
7.12.1 基本原理 311
7.12.2 开发步骤 311
7.13 能量罩 313
7.13.1 基本原理 313
7.13.2 开发步骤 313
7.14 本章小结 316
第8章 3D游戏开发的常用技术 317
8.1 立方贴图技术的应用 317
8.1.1 Unity天空盒 317
8.1.2 Cubemap的应用 320
8.1.3 HDR天空盒设置 322
8.2 3D拾取技术 324
8.2.1 3D拾取技术简介 324
8.2.2 切换可拾取性 326
8.3 视频播放器——Video Player 327
8.3.1 视频的属性 327
8.3.2 视频播放器应用案例 328
8.4 动态字体 330
8.5 重力加速度传感器 331
8.6 PlayerPrefs类 333
8.7 虚拟按钮与摇杆的使用 334
8.7.1 下载并导入标准资源包 335
8.7.2 使用虚拟按钮和摇杆的案例 335
8.8 线的渲染——Line Renderer 337
8.9 Render Texture的应用 339
8.10 声音——Audio 341
8.10.1 声音类型 341
8.10.2 音频管理器 341
8.10.3 音频监听器 342
8.10.4 音频源 342
8.10.5 音频效果 346
8.10.6 音频混响区 349
8.10.7 简单的声音控制案例 350
8.10.8 混音器 351
8.10.9 录音 357
8.11 Cinemachine相机 359
8.11.1 Cinemachine相机的下载与安装 359
8.11.2 Cinemachine相机的使用方法 359
8.12 Timeline的使用 360
8.13 多场景编辑——Multi-Scene Editing 361
8.13.1 多场景编辑的基础操作 361
8.13.2 多场景编辑的高级操作 363
8.13.3 多场景编辑模式还存在的问题 364
8.14 水特效 364
8.14.1 基础知识 364
8.14.2 水特效案例 365
8.15 雾特效 367
8.15.1 雾效果基本原理 367
8.15.2 场景搭建及开发步骤 367
8.16 3D场景中的其他特效 371
8.16.1 光源周围的光晕 371
8.16.2 面板渲染 371
8.16.3 投影器 372
8.17 本章小结 372
第9章 光影效果的使用 373
9.1 渲染路径与颜色空间 373
9.1.1 渲染路径 373
9.1.2 颜色空间 374
9.2 光源 375
9.2.1 点光源 375
9.2.2 平行光光源 376
9.2.3 聚光灯光源 377
9.2.4 区域光光源 377
9.2.5 发光材质 378
9.2.6 Cookies 378
9.2.7 光照过滤 378
9.3 阴影 379
9.3.1 阴影质量 379
9.3.2 阴影性能 381
9.4 光照贴图 381
9.4.1 对场景进行光照烘焙 381
9.4.2 光照烘焙参数详解 383
9.5 光探头 386
9.5.1 Light Probes的使用 386
9.5.2 Light Probes应用细节 388
9.5.3 LPPV光探头代理 388
9.6 法线贴图 390
9.6.1 在Unity中使用法线贴图 391
9.6.2 如何在3ds Max中制作法线贴图 393
9.7 镜头光晕——Flare 394
9.8 反射探头 395
9.8.1 反射探头的使用 395
9.8.2 反射探头属性详解 397
9.9 镜子的开发 399
9.9.1 场景的搭建 399
9.9.2 镜面着色器的开发 402
9.9.3 C#脚本的开发 403
9.10 真实水面效果的开发 405
9.10.1 基本原理 406
9.10.2 场景的搭建 407
9.10.3 C#脚本的开发 407
9.10.4 镜面着色器的开发 410
9.11 本章小结 412
第 10章 模型与动画 413
10.1 3D模型导入 413
10.1.1 主流3D建模软件的介绍 413
10.1.2 Unity与建模软件单位的比例关系 414
10.1.3 将3D模型导入Unity 415
10.2 网格——Mesh 416
10.2.1 网格过滤器 416
10.2.2 Mesh的属性和方法 416
10.2.3 Mesh的使用 417
10.2.4 使用Mesh使物体变形的简单案例 417
10.3 第三方切割工具库Shatter Toolkit的使用 422
10.3.1 Shatter Toolkit简介 422
10.3.2 使用Shatter Toolkit的简单 案例 424
10.4 旧版动画系统 431
10.4.1 导入角色动画资源 431
10.4.2 动画控制器 432
10.4.3 动画脚本 433
10.4.4 使用旧版动画系统的简单 案例 434
10.5 Mecanim动画系统 437
10.5.1 角色动画的配置 437
10.5.2 动画控制器的创建 443
10.5.3 动画控制器的配置 443
10.5.4 角色动画的重定向 446
10.5.5 角色动画的混合—— 创建动画混合树 449
10.5.6 角色动画的混合—— 混合类型介绍 450
10.5.7 Mecanim中的代码 控制 451
10.5.8 案例分析 456
10.6 动画变形——Blend Shapes 459
10.7 本章小结 462
第 11章 地形与寻路技术 463
11.1 地形引擎 463
11.1.1 地形的创建 463
11.1.2 灰度图的使用 468
11.2 树编辑器 469
11.2.1 属性介绍 469
11.2.2 简单案例 471
11.3 拖尾渲染器——Trail Renderer 473
11.3.1 背景介绍 473
11.3.2 拖尾渲染器属性介绍 473
11.3.3 拖尾渲染器的使用 474
11.3.4 产生汽车轮胎刹车痕 案例 474
11.4 自动寻路技术 478
11.4.1 基础知识 478
11.4.2 简单案例 479
11.5 本章小结 483
第 12章 游戏资源更新 484
12.1 AssetBundle资源包 484
12.1.1 AssetBundle简介 484
12.1.2 创建AssetBundle 484
12.1.3 AssetBundle的下载 487
12.1.4 AssetBundle的加载和 卸载 489
12.1.5 关于AssetBundle 490
12.1.6 本节小结 491
12.2 Lua热更新 491
12.2.1 热更新的基本介绍 492
12.2.2 XLua的基本介绍 493
12.2.3 XLua框架介绍 494
12.2.4 XLua常用方法介绍 495
12.2.5 XLua热更新案例 497
12.2.6 热更新服务器配置 502
12.2.7 本节小结 504
12.3 本章小结 504
第 13章 多线程技术与网络开发 505
13.1 多线程技术 505
13.1.1 多线程技术的基础 知识 505
13.1.2 多线程技术用于大量 计算 506
13.1.3 多线程技术在网络开发中的 应用 508
13.2 UnityWebRequest类 511
13.2.1 用UnityWebRequest类下载 网络资源 512
13.2.2 场景搭建 512
13.3 JSON 514
13.3.1 JSON的基础知识 514
13.3.2 JSON的解析 514
13.4 网络类——Network 515
13.4.1 静态变量 515
13.4.2 静态方法 518
13.4.3 消息发送 523
13.5 基于MLAPI开发网络游戏 524
13.5.1 非授权服务器和授权 服务器 524
13.5.2 Network Manager组件 524
13.5.3 使用MLAPI进行开发 525
13.6 基于Photon服务器开发网络 游戏 529
13.6.1 环境搭建 529
13.6.2 案例的效果预览 530
13.6.3 案例场景的搭建 530
13.6.4 脚本的编写 531
13.7 本章小结 533
展开