内容简介

Unity3D/2D游戏开发从0到1(第二版)》为第二版,采用Unity2017。《Unity3D/2D游戏开发从0到1(第二版)》分为实战项目篇与开发理论篇进行系统讲解。实战项目篇由浅入深提供四个教学案例:2D小游戏两个和两款3D大型教学案例。通过本篇的认真学习,读者可以达到优秀开发者的水平。开发理论篇,从初学者容易入门的角度把《Unity3D/2D游戏开发从0到1(第二版)》分为上、下两篇各15章。上篇完全是为零基础游戏爱好者或者在校大学生所准备,采用“案例化”教学思路,所学知识点与游戏案例紧密结合。下篇是理论进阶篇,主要学习3D数学、3D图形学(3D图形渲染/贴图/PBS材质/Shader)、TimeLine&Cinemachine、Unity2017新导航寻路、项目优化策略、游戏移植与手指触控、对象缓冲池、网络Socket、AssetBundle资源动态加载与AssetBundle框架设计等。

作者简介

拥有十多年的软件、游戏研发与教学经验,具备深厚语言基础。早年在国内上市企业做研发经理,熟悉企业大型软件运作管理过程、软件架构设计理论。精通与熟悉Unity3D、XNA等3D与2D游戏开发技术,教学语言思路清晰,循循善诱的教学方法深受广大学子欢迎。

目录

项目实战篇
实战项目1:记忆卡牌3
1.策划3
2.场景搭建4
3.游戏核心逻辑5
实战项目2:FlappyBird8
1.策划8
2.场景搭建9
3.主角10
4.道具开发12
5.UI界面与游戏周期管理15
实战项目3:不夜城跑酷17
1.策划17
2.场景搭建19
3.主角21
4.道具开发24
5.场景与道具的动态生成算法31
6.UI界面与游戏周期管理34
7.对象缓冲池管理38
实战项目4:生化危机41
1.策划41
2.场景搭建45
3.主角47
4.道具开发47
5.UI界面与游戏周期管理51
开发理论篇上篇
第1章游戏历史与Unity发展概述54
1.1“钱途”无限的游戏开发领域54
1.1.1Unity版本快速迭代升级55
1.1.2Unity技术应用范围56
1.1.3强大的跨平台性56
1.2电子游戏发展史57
1.3游戏引擎与Unity的发展历程60
1.3.1什么是游戏引擎60
1.3.2游戏引擎的功能61
1.3.3为什么需要使用游戏引擎61
1.3.4游戏引擎的发展62
1.3.5Unity游戏引擎的特点62
1.3.6Unity引擎的主要特性63
1.3.7Unity游戏引擎的发展历史64
1.4Unity下载与安装65
1.4.1Unity下载与安装65
1.4.2Unity的资源商店(AssetStore)66
第2章Unity2017.x安装与3D模型入门67
2.1Unity2017.x版本的下载安装67
2.2Unity编辑器界面75
2.2.1掌握Unity编辑器的布局与调整77
2.2.2了解Unity编辑器各个重要视图与作用78
2.33D模型入门操作80
2.3.13D模型的位移、旋转与缩放80
2.3.23D模型操作快捷方式82
2.3.3选择3D模型的“正”方向82
2.3.4使用属性窗口进行精确调整84
2.4开发Unity“HelloWorld”85
2.5本章练习与总结88
第3章3D模型基础89
3.1Unity编辑器进一步讲解89
3.1.1Unity菜单89
3.1.2项目(Project)视图93
3.1.3场景(Scene)视图95
3.1.4视图显示模式96
3.1.5场景视图的查看与导航97
3.2世界、局部与左手坐标系98
3.2.1现实世界的“世界坐标”与“局部坐标”98
3.2.2演示两种坐标的差异98
3.2.3使用脚本方式演示差异99
3.2.4什么是“左手坐标系”100
3.2.5使用控制台(Console)窗口进行代码调试100
3.3脚本知识入门101
3.3.1键盘与鼠标输入代码101
3.3.2环绕旋转101
3.4小项目开发:地球环绕太阳旋转101
3.5本章练习与总结105
3.6案例开发任务105
第4章地形编辑器106
4.1创建基本地形106
4.1.1绘制贴图纹理109
4.1.2制作各种地形110
4.1.3种植树木与花草113
4.2观察虚拟世界113
4.3扩展地形编辑115
4.4本章练习与总结116
4.5案例开发任务117
第5章光源118
5.1概述118
5.2光源的分类与重要参数120
5.3典型光源场景制作121
5.4本章练习与总结123
5.5案例开发任务123
第6章光照烘焙124
6.1概述124
6.2光照烘焙125
6.3反射探针(ReflectionProbe)132
6.4光照探头(LightProbe)134
6.5光照预览窗口(LightExplorer)137
6.6本章练习与总结138
6.7案例开发任务138
第7章音频139
7.1概述139
7.2音频剪辑属性140
7.3音频监听与音频源组件140
7.4音频混响器与滤波器组件143
7.5音频混音器(AudioMixer)144
7.6本章练习与总结151
7.7案例开发任务151
第8章Unity脚本程序设计153
8.1Unity脚本编辑器介绍153
8.1.1什么是.Net框架153
8.1.2什么是Mono与MonoDevelop154
8.1.3什么是VisualStudio154
8.2脚本程序基础155
8.2.1创建脚本注意事项155
8.2.2项目工程分层设计156
8.2.3如何更改脚本模板157
8.3Unity重要脚本函数157
8.3.1Unity事件函数157
8.3.2Untiy重要核心类学习158
8.3.3GameObject类158
8.3.4MonoBehaviour类162
8.3.5Transform类165
8.3.6Time类166
8.4Unity脚本生命周期167
8.4.1Unity事件函数调用顺序168
8.4.2事件函数禁用与启用规律169
8.5Unity伪多线程揭秘172
8.6修改Unity脚本执行顺序173
8.7Unity重要应用类175
8.8Unity输入管理器176
8.9本章练习与总结178
第9章UI界面开发179
9.1概述179
9.2基础控件182
9.2.1Canvas画布控件182
9.2.2EventSystem控件183
9.2.3Panel控件184
9.2.4Text控件184
9.2.5Image控件185
9.2.6Button控件187
9.2.7Button事件系统189
9.3Anchor锚点与屏幕自适应191
9.4UGUI高级控件193
9.4.1Toggle控件193
9.4.2Slider控件194
9.4.3Scrollbar控件194
9.4.4ScrollRect复合控件195
9.4.5TabPage标签页面197
9.5UGUI布局管理控件199
9.6本章练习与总结202
9.7案例开发任务202
第10章3D模型与动画制作204
10.1概述205
10.23DMax软件基本使用205
10.33D模型尺寸单位设置207
10.43DMax模型制作与导出Unity流程208
10.5模型导出丢失贴图问题212
10.63D文字的制作与动画212
10.7角色Legacy动画213
10.8Animation动画编辑工具216
10.9自定义资源包的导入与导出219
10.10本章练习与总结222
10.11案例开发任务222
第11章物理学模拟223
11.1概述223
11.2刚体223
11.3物理材质227
11.4脚本控制刚体229
11.5关节系统230
11.5.1铰链关节230
11.5.2弹簧关节232
11.5.3固定关节232
11.5.4角色关节233
11.5.5布料模拟235
11.6物理管理器(PhysicsManager)237
11.7本章练习与总结238
第12章碰撞体与触发器239
12.1概述239
12.2碰撞体的分类与作用240
12.3碰撞检测事件函数241
12.4触发检测事件函数242
12.5碰撞过滤244
12.6本章练习与总结246
12.7案例开发任务247

第13章Unity2D技术248
13.1概述248
13.2项目示例讲解248
13.3Untiy2D物理引擎253
13.3.12D刚体253
13.3.22D碰撞体254
13.3.32D关节系统256
13.4Unity2D特效功能256
13.4.1SpriteMask功能256
13.4.2精灵效应器组件258
13.5本章练习与总结263
13.6案例开发任务263
第14章协程与调用函数264
14.1协程定义与功能264
14.2调用函数定义与功能265
14.3协程与调用函数区别与适用范围266
14.4本章练习与总结267
14.5案例开发任务267
第15章数据传值技术268
15.1概述268
15.2SendMessage简单传值269
15.3SendMessage高级传值271
15.4本章练习与总结272
开发理论篇下篇
第16章3D数学274
16.1坐标系统274
16.2向量279
16.3本章练习与总结287
第17章3D图形学288
17.13D图形学概述288
17.2Unity3D图形渲染289
17.2.1MeshFillter网格过滤器289
17.2.2MeshRenderer网格渲染器290
17.2.3SkinnedMeshRenderer蒙皮网格渲染器291
17.3贴图292
17.3.1二维贴图292
17.3.2视频贴图297
17.3.3渲染贴图301
17.4材质302
17.4.1基于物理着色(PBS)的材质系统303
17.4.2材质球属性305
17.4.3材质球分类306
17.5着色器(Shader)313
17.5.1概述313
17.5.2基本原理:图形渲染管线314
17.5.3着色器的分类与基本结构315
17.5.4固定渲染管线着色器318
17.5.5表面着色器320
17.6本章练习与总结327
第18章TimeLine&Cinemachine技术328
18.1TimeLine时间线328
18.2Cinemachine虚拟摄像机332
18.3FrameRecorder帧录制器335
18.4本章练习与总结336
第19章粒子系统337
19.1概述337
19.2基本粒子组件属性338
19.3粒子系统示例344
19.4Unity内置粒子系统包346
19.5粒子系统的脚本调用方式347
19.6LineRenderer&TrailRenderer348
19.7本章练习与总结351
第20章Mecanim动画系统352
20.1概述352
20.2制作Mecanim动画系统353
20.2.1步骤一:制作Avatar替身353
20.2.2步骤二:设置动画状态机(AnimatorController)356
20.2.3步骤三:设置动画循环359
20.2.4步骤四:使用代码控制角色动画359
20.3融合术技术360
20.4动画层与身体蒙版365
20.5动画复用技术367
20.6StateMachineBehaviour脚本368
20.7本章练习与总结370
第21章导航寻路371
21.1基本导航寻路371
21.2斜坡与跳跃374
21.3使用OffMeshLink组件375
21.4网格分层376
21.5NavMeshObstacle组件378
21.6基于组件NavMesh的新特性380
21.7NavMesh定向3D空间任何方向新特性382
21.8NavMesh动态烘焙新特性383
21.9本章练习与总结385
第22章项目研发常用优化策略386
22.1遮挡剔除(OcclusionCulling)386
22.2层级细节(LOD)390
22.3项目调优工具数据分析器(Profiler)393
22.4项目优化策略395
22.4.1项目优化之DrawCall395
22.4.2项目优化之模型与图像方面397
22.4.3项目优化之光照与摄像机方面399
22.4.4项目优化之程序优化方面401
22.4.5项目优化之Unity系统设置方面403
22.4.6项目优化之良好开发与使用习惯404
22.5本章练习与总结404
第23章Unity游戏移植与手指触控识别406
23.1JDK安装与环境参数配置406
23.1.1下载与安装JDK406
23.1.2设置JDK环境409
23.2Android虚拟机的安装与配置412
23.2.1下载与配置AndroidSDK412
23.2.2更新环境变量415
23.3Unity相应配置415
23.3.1Unity配置AndroidSDK路径415
23.3.2发布程序,切换到Android平台416
23.3.3更改默认的产品标示符417
23.3.4输出*.apk包417
23.3.5真机测试418
23.4手指触控识别418
23.4.1手指触控API418
23.4.2手指触控常见方式419
23.5本章练习与总结422
第24章软件重构思想423
24.1软件重构的重要性423
24.2项目示例424
24.3本章练习与总结427
第25章射线428
25.1射线概述428
25.2项目示例讲解429
25.2.1射击场景开发429
25.2.2角色寻路开发430
25.3本章练习与总结431
第26章数据持久化技术432
26.1PlayerPrefs持久化技术432
26.2XML持久化技术434
26.3本章练习与总结439
第27章预加载与对象缓冲池技术440
27.1概述440
27.2简单对象缓冲池技术441
27.3高级对象缓冲池技术445
27.4本章练习与总结451
第28章网络基础452
28.1网络概述452
28.2多线程技术453
28.2.1多线程的定义453
28.2.2多线程的优先级454
28.2.3多线程的状态控制455
28.2.4多线程的线程同步456
28.3套接字Socket技术458
28.3.1网络基础知识458
28.3.2Socket定义459
28.3.3面向连接的Socket459
28.3.4无连接的Socket460
28.3.5同步Socket460
28.3.6异步Socket461
28.4网络下载WWW类464
28.5本章练习与总结466
第29章AssetBundle资源动态加载467
29.1AssetBundle概述467
29.2创建AssetBundle468
29.3下载AssetBundle469
29.4AssetBundle的加载与卸载470
29.5AssetBundle依赖关系472
29.6本章练习与总结472
第30章AssetBundle框架设计473
30.1AssetBundle框架整体设计473
30.2自动化创建AssetBundle475
30.2.1自动给资源文件添加标记475
30.2.2打包资源且输出路径477
30.2.3删除路径中所有资源478
30.3单一AssetBundle包的加载与管理478
30.4AssetBundle整体管理480
30.4.1读取项目清单文件481
30.4.2AssetBundle关系类482
30.4.3AssetBundle总管理类482
30.4.4多AssetBundle管理类483
30.5本章练习与总结484
附录A全国Unity游戏研发职位笔试/面试真题集锦486
附录BUnity开发常见错误与分析492
附录C游戏开发职位简历模板494
附录DUnity4.x/5.x/2017.x升级差异总结498
附录EUnity特殊文件夹一览表501
附录F游戏开发对C#语言知识点基本要求504

精彩书摘

  《Unity3D/2D游戏开发从0到1(第二版)》:
  延时光照(DeferredLighting)
  延时光照具备最高的保真度与真实感的渲染途径。……
  延迟光照的主要优点是对于能影响物体的光线数量没有上限,全部采用以每像素的方式进行光线计算。所有光线都可以使用灯光Cookie、产生阴影,光照计算的开销与屏幕的光线尺寸成正比,与所照射的物品的数量没有直接关系。
  延迟光照的缺点是需要消耗系统大量资源,需要较高水平的硬件支持。影响计算性能的因素分别是被照亮的物体在屏幕上的像素数量和投射阴影的灯光数量;延迟光照中实时光线的开销与光线照亮的像素数量成正比,而不取决于场景的复杂性。
  前句渲染(ForwardRendering)
  基于着色器的渲染途径。它支持逐像素计算光照(包括法线贴图和灯光Cookies)及支一个来自平行光的实时阴影……,这也是系统的默认光照模式,是一种保持较高光照效果与较高系统性能的综合平衡选项。
  ……

前言/序言

前言

2004年,Unity公司诞生于丹麦的阿姆斯特丹,2005年将总部设在了美国的旧金山,并发布了Unity1.0版本。起初它只能应用于MAC平台,主要针对WEB项目和VR(虚拟现实)的开发。这时的它并不起眼,直到2008年推出Windows版本,并开始支持iOS和Wii,才逐步从众多的游戏引擎中脱颖而出,并顺应移动游戏的潮流而变得炙手可热。2009年,Unity的注册人数已经达到了3.5万,荣登2009年游戏引擎的前五名。2010年,Unity开始支持Android,继续扩散影响力。其在2011年开始支持PS3和XBOX360,则可看作全平台的构建完成,截至笔者发稿目前Unity已经支持Windows、MacOSX、webbrowsers、iOS、Android、PlayStation3、Xbox360、XboxOne、WindowsStore、WindowsPhone、Linux、Blackberry10、WiiU、PlayStation4、PlayStationVita、PlayStationMobile、SamsungTizen、XboxOne等几乎所有的主流平台。

如此的跨平台能力,很难让人再挑剔,尤其是支持当今最火的Web、iOS和Android平台。另据国外媒体《游戏开发者》报道:在游戏引擎里哪种功能最重要的调查中,“快速的开发时间”排在了首位,很多Unity用户认为这款工具易学易用,一个月就能基本掌握其功能。

根据Unity官方(2014年8月)最新公布的数据,全世界有6亿的玩家在玩使用Unity引擎制作的游戏,用Unity创造的应用和游戏目前的累计下载量达到了87亿次!

Unity中国区的开发者数量、用户活跃度和终端安装量均已经成为全球第一。Unity引擎占据全功能游戏引擎市场45%的份额。全球用户已经超过330万人,每月活跃用户数高达60万!惊人的详细数据如下:

1.市场份额45%居全球首位

在世界范围内,Unity占据全功能游戏引擎市场45%的份额,居全球首位。最接近Unity的竞争对手的市场份额只有其1/3。

2.6亿玩家,87亿次下载

Unity通过使用我们的引擎制作的游戏吸引了遍布世界各地的6亿游戏玩家。相比之下,Facebook拥有8.29亿的日常用户。用Unity创造的应用和游戏目前的累计下载量达到了87亿次。

2012年,Unity正式进入中国市场,短短两年的发展,已经成就了业务量10倍的增长。无论是开发者的数量、活跃度、终端安装量,还是Unity引擎在3D游戏市场的占有率,Unity中国都是当之无愧的全球第一,以下是中国区Unity市场创造的3项世界第一!

1.中国注册用户数全球第一

Unity目前的开发者注册人数已经超过330万,在2017年的4月份,中国区的开发者数量已经超越美国,成为全球第一。

2.中国活跃用户量全球第一

Unity的每月全球活跃用户超过60万。中国区每个月Unity编辑器被使用的次数总和高达180万次,居全球首位。美国以150万次使用次校居全球第二。

3.中国区3D手机游戏市场全球第一

Unity中国区在3D手机游戏市场的占有率已经达到75%,超越日本成为世界第一。也就是说,在最畅销的前100款3D手机游戏中,平均每10款就有7.5款是使用Unity引擎制作的。

Unity3D/2D游戏开发从0到1(第二版)》特点

1.书籍采用Unity2017版本进行教学,在第一版的基础上,60%的内容按照新版本进行重写。理论篇增加所有Unity2017重要知识点:基于ProgressiveLightmapper新光照引擎的光照烘焙、光照预览LightExplorer技术、Unity2D新的SpriteMask功能、2D关节系统、精灵效应器组件(BuoyancyEffector2D、PlatformEffector2D等),TimeLine&Cinemachine技术,基于Unity2017版本AssetBundle资源动态加载理论及AssetBundle实用框架设计等。

2.根据第一版广大读者的反馈情况,实战项目篇由第一版1个项目的讲解,扩充为4个项目循序渐进地阐述。进一步强化读者对Unity知识点的灵活运用,做到举一反三,让学员零基础开始起步,真正通过一《Unity3D/2D游戏开发从0到1(第二版)》成为游戏开发高手!

3.《Unity3D/2D游戏开发从0到1(第二版)》讲解通俗易懂,循序渐进,且对于Unity技术点讲解全面、完整、深入,可以成为读者值得长期珍藏的书籍。

4.《Unity3D/2D游戏开发从0到1(第二版)》配套下载资料包含海量教学资料(采用Unity2017版),方便大专院校与国内外广大培训机构讲师与学员使用。

5.为进一步方便国内外广大游戏开发爱好者与读者学习,书籍附录部分提供如下实用学习资料:“国内游戏开发企业面试与笔试真题集锦”、“Unity开发常见错误与分析”、“游戏开发职位简历模板”、“Unity4.x/5.x/2017.x升级差异总结”、“Unity特殊文件夹一览表”、“Unity对C#语言的知识点基本要求列表”等。

Unity3D/2D游戏开发从0到1(第二版)》配套资料下载与联系作者

为了更好地服务广大Unity学员,进一步提高服务质量,特提供书籍配套教学资料下载链接地址与作者沟通渠道:

?出版社下载链接:www.hxedu.com.cn

?百度云下载链接:http://pan.baidu.com/s/1jHCy5vC密码:wmcj

?作者微博:http://weibo.com/liuguozhu1

(注:如果以上下载链接失效或者有技术疑问,欢迎在作者微博与QQ群中留言交流)

?QQ群交流:群(1):480518095群(2):332722694

?编者联系邮箱:public_liuguozhu@163.com

第二版本整体说明

第二版本的改版整体突出三个“更”字:更新、更多、更实用!详细描述如下。

1.“更新”

Unity3D/2D游戏开发从0到1(第二版)》采用最新Unity2017.x版本进行讲解,其中涉及Unity2017最新的光影效果、光影调试LightExplorer窗口预览技术、强大的影视动画编辑Timeline&Cinemachine功能、全新的动态烘焙NavMesh技术等。

2.“更多”

本版本针对广大高校与培训机构的反馈意见,对于重要核心章节都提供了实战项目练习,以供广大学员更有针对性地巩固学习。

本版本相对第一版,在游戏案例项目上增加到了4个项目的讲解,且最后两个大型游戏项目,换装了全新的场景与道具素材,更具观赏性与可玩性。

3.“更实用”

针对老读者而言,第二版本相对第一版,还着重强化了2D游戏开发中大量实用组件与核心API的讲解、3D图形学中基于PBS材质系统与Shader,以及Unity2017.x版本资源动态加载AssetBundle的讲解深度与广度。尤其对于AssetBundle技术,《Unity3D/2D游戏开发从0到1(第二版)》还提供了商业级的AssetBundle框架封装。不仅对初学者,对于广大Unity研发人员也具有很高的实用与参考价值。

针对广大高校与培训机构老师的意见,对部分章节的讲解顺序与内容做了更加合理的安排,以期达到更佳的学习体验。

致谢

感谢电子工业出版社张迪老师的专业修改意见与鼓励。同时感谢家人的支持,以及吴翔等朋友对技术支持的帮助与汗水付出。最后,祝电子工业出版社越办越好,为祖国IT人才的培养贡献更大的力量。

参加《Unity3D/2D游戏开发从0到1(第二版)》编写的还有彭振宇、张光超、范少敏、臧大磊、赵晋伟、毛广超、韦节宾、刘传辉、郭义华、魏吉芳和郭义芳。

由于编者水平有限,且书中涉及知识点较多,难免有错误疏漏之处,敬请广大读者批评指正,并提出宝贵意见。


其他推荐