全书内容分为三篇。
1.第一篇是入门篇,针对完全没有任何Unity开发经验的开发者。学完本部分内容后,开发者应该对Unity的基本知识有所了解。
2.第二篇是进阶篇,里面涵盖了VR/AR开发所必须掌握的Unity3d技能。学完本部分内容后,开发者应该掌握VR/AR开发所必须具备的Unity3d技能。
3.第三篇是实战篇,主要通过实战案例的开发学习来掌握主流VR/AR设备平台的知识和技能。学完本部分内容后,学员应对主流的VR/AR设备平台及其开发工具有充分的了解和认识。
封面图
目录
- 本书赞誉
- 前言
- 第一篇入门篇
- 第1章初识神兵:为什么选择Unity 2
- 1.1常用3D引擎介绍 2
- 1.1.1什么是游戏引擎 2
- 1.1.2游戏引擎架构基础 3
- 1.1.3主流3D引擎对比分析 6
- 1.2Unity的发展史及代表作品 7
- 1.2.1Unity的前世今生 7
- 1.2.2Unity的代表作品 8
- 1.3Unity的授权、服务与安装 10
- 1.3.1Unity的授权类型和服务 10
- 1.3.2Unity的安装 10
- 1.4如何获取Unity开发的学习资源 12
- 1.4.1Unity的开发者官方认证培训 12
- 1.4.2Unity官方的网站资源 12
- 1.4.3值得推荐的第三方学习资源 13
- 1.5本章小结 14
- 第2章蹒跚学步:和Unity的第一次亲密接触 15
- 2.1Unity编辑器入门 15
- 2.1.1界面布局 15
- 2.1.2Unity的工具栏 19
- 2.1.3顶部菜单栏 22
- 2.1.4Console视图 26
- 2.2Unity中的核心概念和子系统 27
- 2.2.1游戏场景 27
- 2.2.2游戏对象 27
- 2.2.3组件 28
- 2.2.4预设体 29
- 2.2.5Unity的核心子系统 29
- 2.3Unity Asset Store游戏资源商城 32
- 2.4本章小结 33
- 第3章无往不利:在Unity中使用C#进行编程 34
- 3.1C#语言概述 34
- 3.1.1为什么选择C# 34
- 3.1.2C#的开发环境 35
- 3.2C#的基本语法和使用 35
- 3.2.1变量和数据类型 35
- 3.2.2表达式与运算符 37
- 3.2.3流程控制 43
- 3.2.4函数 45
- 3.2.5类、对象和方法 48
- 3.3Unity的脚本系统 51
- 3.3.1创建脚本 52
- 3.3.2MonoDevelop编辑器及Visual Studio 54
- 3.3.3事件函数 54
- 3.4本章小结 58
- 第二篇进阶篇
- 第4章创建一个新世界:游戏场景 60
- 4.1创建基础的游戏场景 60
- 4.1.1Unity中的地形引擎 60
- 4.1.2基本几何体的使用 65
- 4.1.3添加天空盒 66
- 4.2创建外部的游戏资源 68
- 4.2.13D模型、材质和动画的创建工具 68
- 4.2.2音效创建工具 71
- 4.2.3其他资源创建工具 71
- 4.3导入外部的游戏资源 71
- 4.3.12D图像文件的导入和设置 72
- 4.3.23D模型的导入和设置 72
- 4.3.33D动画的导入和设置 73
- 4.3.4音频和视频的导入和设置 74
- 4.3.5Unity资源包的导入和导出 74
- 4.4实战:创建BattleStar项目并准备游戏资源 75
- 4.4.1BattleStar游戏的策划与设计 75
- 4.4.2创建BattleStar项目并添加版本控制 76
- 4.4.3创建并导入BattleStar项目所需的3D美术资源 76
- 4.4.4创建BattleStar的基本游戏场景 81
- 4.5本章小结 88
- 第5章有了光就有了一切:Enlighten 89
- 5.1Unity光照系统介绍 89
- 5.1.1Light组件简介 89
- 5.1.2常见的光源类型 90
- 5.1.3Light inspector中的参数简介 91
- 5.2全局光照 93
- 5.2.1全局光照简介 93
- 5.2.2烘焙 94
- 5.2.3Lightmap的使用 95
- 5.2.4Light Probe和Re ection Probe的使用 95
- 5.3实战:给BattleStar游戏场景添加光照 100
- 5.3.1给场景添加光照前的准备工作 101
- 5.3.2给场景添加太阳光 101
- 5.3.3添加发光贴图 102
- 5.3.4添加点光源 103
- 5.3.5添加Light Probe Group 107
- 5.3.6添加Ref lection Probe 110
- 5.3.7进行光照烘焙处理 111
- 5.4本章小结 113
- 第6章让游戏画面栩栩如生:粒子系统和其他 114
- 6.1Shuriken粒子系统 114
- 6.1.1什么是粒子系统 114
- 6.1.2Shuriken粒子系统 115
- 6.2Shader的使用 117
- 6.2.1什么是Shader 117
- 6.2.2Unity中的标准Shader 118
- 6.2.3创建自定义的Shader 126
- 6.3Post Processing的使用 130
- 6.3.1Post Processing简介 130
- 6.3.2如何在Unity项目中添加Post Processing 131
- 6.4实战:美化BattleStar游戏场景的视觉效果 133
- 6.4.1设置场景材质(标准Shader的使用) 133
- 6.4.2制作添加粒子系统特效1:烟尘 134
- 6.4.3制作添加粒子系统特效2:火花 138
- 6.4.4给游戏添加后处理特效 142
- 6.4.5第三方插件Amplify Shader Editor的使用 147
- 6.5本章小结 155
- 第7章玩家的好帮手:UI系统 156
- 7.1Unity中的UI系统简介 156
- 7.1.1UGUI系统简介 156
- 7.1.2Canvas简介 157
- 7.1.3交互元素简介 163
- 7.2实战:给BattleStar游戏添加UI 168
- 7.3本章小结 173
- 第8章让角色活灵活现:Unity中的动画系统 174
- 8.1Unity动画系统 174
- 8.1.1Legacy Animation System 174
- 8.1.2Mecanim动画系统概览 175
- 8.1.3Mecanim动画系统的使用 179
- 8.2实战:让BattleStar游戏中的角色动起来 183
- 8.2.1导入NPC角色资源 183
- 8.2.2设置NPC基础状态机 184
- 8.2.3添加状态机之间的切换 187
- 8.2.4编写控制角色动画的脚本 188
- 8.3本章小结 190
- 第9章最简单的游戏AI:NavMesh寻路系统 191
- 9.1Unity中的寻路系统 191
- 9.1.1寻路系统内部工作原理 191
- 9.1.2烘焙设置:NavMesh 192
- 9.1.3添加障碍物:NavMesh Obstacle 195
- 9.1.4跳过障碍物:Off-Mesh Link 196
- 9.2BattleStar游戏实战:在游戏中使用寻路系统 196
- 9.2.1添加地板对象的寻路烘焙 197
- 9.2.2在NPC角色对象上添加并设置寻路功能 199
- 9.3本章小结 202
- 第10章真实世界的法则:物理引擎 203
- 10.1Unity中的物理引擎系统 203
- 10.1.1物理系统概述 203
- 10.1.2Rigidbody组件 203
- 10.1.3Collider组件 208
- 10.1.4Raycast 211
- 10.2BattleStar游戏实战:给游戏添加物理系统 212
- 10.2.1BattleStar游戏中的物理系统设计 212
- 10.2.2在场景中添加物理碰撞系统 213
- 10.3本章小结 217
- 第11章且听风吟:音乐和音效 218
- 11.1Unity中的Audio系统 218
- 11.1.1Audio系统概述 218
- 11.1.2Audio Source 219
- 11.1.3Audio Reverb Zone 222
- 11.2实战:给BattleStar游戏添加背景音乐和音效 223
- 11.2.1将音乐和音效资源导入到项目中 223
- 11.2.2给游戏添加背景音乐 224
- 11.2.3给游戏添加音效 225
- 11.3本章小结 227
- 第12章让游戏更顺畅:数据存取与性能优化 228
- 12.1Unity中的数据存取 228
- 12.1.1使用PlayerPrefs 229
- 12.1.2使用XML 229
- 12.1.3使用数据库 230
- 12.2Unity中的性能优化 230
- 12.2.1Unity中的遮挡剔除 231
- 12.2.2使用Pro ler和Frame Debugger 232
- 12.2.3脚本优化 233
- 12.3实战:给BattleStar添加数据存取机制并优化游戏 235
- 12.3.1游戏数据存取机制的设计 235
- 12.3.2实现游戏数据存取机制 237
- 12.3.3对游戏性能进行优化 241
- 12.4本章小结 245
- 第13章一个人的世界很孤单:Unity网络编程 246
- 13.1UNET简介 246
- 13.1.1UNET中的服务器 247
- 13.1.2High Level API 248
- 13.1.3Transport Layer API 249
- 13.2Unity中的第三方网络插件:Photon 250
- 13.2.1Photon的主要功能特性 250
- 13.2.2Photon Cloud与Photon Server 251
- 13.2.3PUN、PUN+与UNET 251
- 13.3实战:使用Unity和Photon创建一个简单的多人在线游戏 252
- 13.3.1PhotonFPS游戏的产品策划 252
- 13.3.2创建Unity项目和基础场景 253
- 13.3.3优化和完善游戏 259
- 13.3.4添加语音对话功能 262
- 13.4本章小结 264
- 第三篇实战篇
- 第14章虚拟现实开发技术入门 266
- 14.1虚拟现实的技术基础 266
- 14.1.1立体显示技术 266
- 14.1.2场景建模技术 267
- 14.1.3自然交互技术 268
- 14.2主流的虚拟现实设备 269
- 14.2.1Oculus Rift 269
- 14.2.2HTC Vive 270
- 14.2.3Sony PlayStation VR 271
- 14.2.4Samsung Gear VR 272
- 14.2.5Google Daydream 272
- 14.2.6Microsoft HoloLens 272
- 14.2.7苹果iGlass 273
- 14.3主流的虚拟现实开发工具 273
- 14.3.1虚拟现实开发平台简介 273
- 14.3.2第三方工具和SDK 274
- 14.4虚拟现实应用开发的基本流程和注意事项 276
- 14.4.1虚拟现实应用开发的基本流程 276
- 14.4.2虚拟现实应用开发的注意事项 278
- 14.5本章小结 280
- 第15章实战:跨HTC Vive和Oculus Rift平台开发VR游戏 281
- 15.1HTC Vive平台开发概述 281
- 15.1.1HTC Vive设备及平台简介 281
- 15.1.2Lighthouse技术原理 282
- 15.1.3HTC Vive手柄交互详解 283
- 15.1.4Steam VR插件简介 283
- 15.1.5VRTK插件简介 284
- 15.2配置HTC Vive的开发测试环境 285
- 15.2.1安装HTC Vive硬件和SteamVR软件 285
- 15.2.2设置并打开Steam VR 286
- 15.2.3运行SteamVR的测试场景 289
- 15.2.4TPCast无线模块 289
- 15.2.5Vive追踪器简介 290
- 15.3实战:开发跨平台VR联网对战塔防游戏 291
- 15.3.1对战塔防游戏策划 291
- 15.3.2创建项目并进行基本设置 292
- 15.3.3新建塔防场景 292
- 15.3.4实现敌人的自动寻路功能 294
- 15.3.5添加其他游戏逻辑组件 297
- 15.3.6使用手柄控制游戏的开始 302
- 15.3.7使用手柄在游戏中进行传送 305
- 15.3.8使用手柄与场景中的物体互动 307
- 15.3.9给玩家装配武器 309
- 15.3.10实现游戏的联网功能 310
- 15.3.11修复游戏中的小问题 319
- 15.3.12适配到Oculus平台 320
- 15.3.13添加背景音乐和音效 322
- 15.4将产品上传到Viveport和Steam平台 322
- 15.5本章小结 325
- 第16章实战:在Google Daydream平台开发VR游戏 326
- 16.1Google Daydream VR平台开发概述 326
- 16.1.1Google Daydream VR设备及平台简介 327
- 16.1.2Google Daydream VR中的交互 327
- 16.2实战:开发VSpaceCraft游戏 328
- 16.2.1《VSpaceCraft》的产品策划 328
- 16.2.2配置Google Daydream VR的开发测试环境 328
- 16.2.3创建新的Daydream项目 332
- 16.2.4游戏基本结构的设计和实现 334
- 16.2.5游戏场景的搭建和设置 338
- 16.2.6将游戏适配到Daydream VR平台 340
- 16.2.7隐藏控制器模型 345
- 16.3将产品发布到Google Play VR和Daydream 347
- 16.3.1Google Play VR和Daydream介绍 347
- 16.3.2VR应用发布 347
- 16.4本章小结 348
- 第17章实战:使用Unity和Vuforia开发AR小游戏 349
- 17.1Vuforia SDK简介 349
- 17.2实战:开发AR小游戏PocketCat 352
- 17.2.1PocketCat游戏简介 352
- 17.2.2配置开发测试环境 352
- 17.2.3开发前的准备工作 354
- 17.2.4利用Image Target实现图像识别 356
- 17.2.5在iOS设备上编译运行 362
- 17.2.6实现用户自定义的Image Target 365
- 17.2.7添加控制角色的虚拟joystick 370
- 17.2.8将项目在Android设备上编译 373
- 17.2.9将游戏发布到AppStore和Android应用商城 374
- 17.3本章小结 374
- 第18章实战:使用Unity和Wikitude开发AR应用 375
- 18.1Wikitude SDK简介 375
- 18.2实战:开发AR游戏iGirl 378
- 18.2.1iGirl游戏简介 378
- 18.2.2下载Wikitude SDK 379
- 18.2.3获取Wikitude的License 380
- 18.2.4创建新项目并导入Wikitude SDK 381
- 18.2.5了解Instant Tracking的运作机制 381
- 18.2.6添加自己的3D模型并设置项目 383
- 18.2.7设置iGirl的预设体 383
- 18.2.8完成其他设置 386
- 18.2.9将AR应用编译运行和发布 386
- 18.3实战:开发一个简单的《口袋动物园》应用 388
- 18.3.1《口袋动物园》的游戏策划 389
- 18.3.2配置开发测试环境 389
- 18.3.3创建ImageTracker 391
- 18.3.4添加模型 392
- 18.3.5使用EasyTouch插件实现手势交互 393
- 18.4本章小结 396
- 第19章实战:在HoloLens平台开发游戏 397
- 19.1HoloLens平台开发概述 397
- 19.2实战:开发HoloSpace游戏 400
- 19.2.1HoloSpace产品策划 400
- 19.2.2配置HoloLens的开发测试环境 401
- 19.2.3设置并运行HoloLens的测试场景 404
- 19.2.4在Unity中导入所需的项目资源 408
- 19.2.5模拟火箭升空的效果 408
- 19.2.6将火箭部署到HoloLens世界中 413
- 19.2.7调整火箭的初始位置 414
- 19.2.8丰富对火箭操作的交互 417
- 19.2.9游戏的UI设计和开发 418
- 19.2.10添加背景音乐和音效 419
- 19.3将产品发布到Windows Store平台 420
- 19.4本章小结 423
- 第20章实战:使用苹果ARKit和Unity开发AR应用 424
- 20.1苹果ARKit简介 424
- 20.2使用Unity ARKit开发iGuitarHero 426
- 20.2.1iGuitarHero小游戏的策划 426
- 20.2.2开发前的准备工作 427
- 20.2.3Unity ARKit插件简介 427
- 20.2.4创建项目并导入ARKit插件 428
- 20.2.5运行ARKit插件的示例场景 429
- 20.2.6在Unity中测试4DViews插件的使用 432
- 20.2.7创建真正的游戏场景 435
- 20.2.8添加游戏背景音乐 439
- 20.3本章小结 440