搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
中公教育数字视觉与虚拟交互自学指南:Unity3D从理论到实战
0.00     定价 ¥ 68.00
图书来源: 浙江图书馆(由JD配书)
此书还可采购24本,持证读者免费借回家
  • 配送范围:
    浙江省内
  • ISBN:
    9787536977822
  • 作      者:
    中公教育优就业研究院
  • 出 版 社 :
    陕西科学技术出版社
  • 出版日期:
    2020-06-01
收藏
编辑推荐
因印刷批次不同,图书封面可能与实际展示有所区别,增值服务也可能会有所不同,以读者收到实物为准《中公版·数字视觉与虚拟交互自学指南:Unity3D从理论到实战》由具有多年开发和授课经验的老师编写,条理清晰,语言通俗易懂,是实战经验与教学技巧的精巧结合。本书章节结构设计合理,知识点前后关联,讲解由浅入深,注重实操与实用性。本书不包含C#语言语法部分,从Unity3D引擎开始讲解,读者需要自行储备C#语言的相关知识。
本书采用双色印刷形式,图文并茂。配套视频讲解等增值服务是本书的一大特色。在本书的重要知识点处提供专业教师的视频讲解,扫描二维码即可实现在线学习,操作便捷高效。本书配套的增值视频使读者在掌握Unity3D引擎的基础之上,具备较强的实际操作能力。
展开
内容介绍
《中公版·数字视觉与虚拟交互自学指南:Unity3D从理论到实战》一书共分为十三章,涵盖了Unity3D引擎的各个系统模块,对虚拟现实、增强现实、游戏开发三个领域做了深入、细致地讲解。本书按由浅入深、循序渐进的规律,从引擎初识到高级开发都做了一一介绍,帮助读者建立一套完整的知识体系,形成知识树。
第一章为Unity3D引擎初识,详细介绍了Unity3D的各个面板、坐标系、3D理论基础等。
第二章介绍了“面向组件”开发思想,是一种比“面向对象”更为高级的设计思想。该章对脚本组件进行了详细讲解,包含常用类与回调方法,是后续各章节的基础。
第三章到第八章涵盖物理系统、2D精灵系统、UGUI系统、动画系统、导航系统、特效系统等模块,对这些模块进行单独细致地分析与讲解,每个模块都对应到实际应用中的某个具体功能。
第九章为协程与WWW类,主要介绍了协程的使用方法与场景,并且阐述了游戏开发中的多线程的有关问题,终配合WWW类封装成下载工具类。
第十章主要介绍数据持久化,包括PlayerPrefs、XML的创建与解析、JSON的创建与解析、数据库语法及工具类的封装,并对数据表的设计做了详细讲述。
第十一章为动态资源加载,包括Resources、AssetBundle等技术,并讲解了一个资源热更的案例。
第十二章和第十三章介绍了AR、VR行业的前景,AR方面主讲高通AR SDK,内容包括图片和模型识别、相机控制、SLAM定位和工程打包发布等技术,VR方面主要介绍了基于HTC Vive的开发流程与VRTK插件的使用。
展开
精彩书摘
  第一章
  Unity3D引擎初识
  1.1什么是引擎
  1.1.1游戏
  游戏是什么每个人都有自己的理解。孩子们一起玩耍、电子游戏、棋牌游戏等,均属于游戏范畴。本书讨论的是其中的子集——基于电子设备的电子游戏,因此本书所说的“游戏”,在没有特指情况下,均指“电子游戏”。
  游戏可按展示维度、玩法类型、联网与否分为多种类型。
  (1)根据展示维度分类
  根据展示维度,游戏可以分为二维游戏、三维游戏。
  二维游戏也称为2D游戏,2D是指通过平面来表现所有的游戏画面效果,如经典的2D横版游戏《超级马里奥》《地狱边境》等,如图1-1-1(a)和图1-1-1(b)所示。
  也有一些看似三维,实则二维的精彩作品,如暴雪公司的《暗黑破坏神》《星际争霸Ⅰ》。这些游戏由2D图片整合而成,可以营造一种俯视3D的视觉效果,如图1-1-1(c)和图1-1-1(d)所示。
  图1-1-12D游戏
  三维游戏也称为3D游戏,是当前游戏的主流,大量新发型游戏采用3D模式开发。通俗地讲,能给人带来立体感的游戏就是3D游戏。3D游戏需要通过技术实现一个具备三个维度的虚拟空间,玩家可以控制角色在三个维度上移动,并提供对应观察视角。这类游戏非常多,如《CS Go》《魔兽世界》等,如图1-1-2所示。
  图1-1-23D游戏
  现实中往往通过技术手段将2D和3D游戏的边界淡化,达到意想不到的新鲜体验。对于游戏用户来说,2D和3D已不再重要,玩法和体验才是关键。你能猜出图1-1-3所示的《纪念碑谷》是2D还是3D游戏吗
  图1-1-3《纪念碑谷》
  (2)根据游戏玩法和蕴含元素分类
  根据游戏玩法和蕴含元素,游戏可以分为角色扮演游戏、动作类游戏等。常见的游戏类型及其缩写如表1-1-1所示。
  表1-1-1游戏类型及其缩写
  游戏类型 缩写 实例
  角色扮演游戏 RPG 《仙剑奇侠传》
  动作角色扮演游戏 ARPG 《暗黑3》《博德之门》
  动作类游戏 ACT 《鬼泣》《战神》
  策略游戏 SLG 《火焰纹章》《三国志系列》
  冒险游戏 AVG 《生化危机》《寂静岭》
  格斗游戏 FTG 《街头霸王》《拳皇系列》
  射击游戏 FPS、TPS 《CS》《绝地求生》
  音乐游戏 MSC 《劲舞团》《节奏大师》
  竞速游戏 RAC 《极品飞车》《跑跑卡丁车》
  即时战略游戏 RTS 《星际争霸》《魔兽争霸》
  多人在线RPG MMORPG 《魔兽世界》
  事实上,游戏分类并无统一标准,各个游戏中的元素也往往存在交叉。以上仅列举了一些作为一名游戏开发者所需掌握的游戏缩写及含义。随着游戏复杂度提高,单一游戏类型逐渐无法描述、分类游戏本身。
  (3)沙盒游戏——开放性世界
  沙盒游戏(SandBox Games)通常含动作、冒险、求生、角色扮演等元素,玩家处在开放性世界中,没有明显的任务主线。其游戏核心是“自由开放”,典型代表便是《侠盗猎车手5》,玩家在游戏中扮演的角色行为是随意的,成为一个普通人还是成为一个商人都可以是玩家的选择。
  这一类游戏都具有极高的自由度,其中部分游戏也将重心放在对场景的改造上,如通过已有的场景资源,进行生产、改造、建造等行为,打造属于自己的虚拟世界,其代表作便是《我的世界》。《我的世界》是一款极度开放的沙盒游戏,曾经有国外大神在《我的世界》中使用“与或非”门,搭建成了现实中的电子元件并运行成功。
  绝大多数游戏的物理规则是对现实世界的模拟,但是不可能完全模拟世界上的所有细节。例如,模拟一个物体运动,只需考虑牛顿运动学即可,不需要考虑相对论、量子力学等因素。近似化和模拟化是游戏开发者的两个有力工具。初学者往往在构想自己的游戏项目时,事无巨细地规定每个细节特征,大限度地接近现实,试图提供真实体验。这是没有必要的,做到适当的简略,能够建立合理的计算模型,游戏才能制作下去。
  1.1.2游戏引擎
  “游戏引擎”这一术语早形成于20世纪90年代,其产生原因与一款FPS(第一人称射击游戏)有关。当年,Id SoftWare公司对游戏《毁灭战士》进行了清晰的功能划分,包括三维图形渲染系统、碰撞检测系统、物理模拟、音频管理、美术整合、游戏场景、游戏规则等应用模块。
  这样做的好处非常明显。例如,三维图形渲染过程,将“渲染”和“内容(数据)”进行剥离。图1-1-4中的僵尸敌人、墙后的长角怪物,它们属于不同的“渲染内容”,虽然图片数据不同,但是可以经过相同的“渲染过程”绘制到屏幕上。将“渲染过程”进行抽象,形成工具,再需要渲染时,便可批量完成。
  图1-1-4《毁灭战士》
  类似的,将每个模块都进行工具化的抽象,这些工具组合在一起,形成一个强大的工具簇。开发者只需要提供不同的内容(如美术、关卡数据、武器、角色、载具、模型、特效、音频等),使用上述工具“驱动”起来,便可得到新的游戏作品。这个强大的工具簇,便称为游戏引擎,以下简称引擎。
  用更加专业的词汇来描述,引擎可称为“数据驱动架构”。引擎是架构,游戏资源是素材数据。将素材填装到架构中,架构就像汽车引擎一样,通过运动(计算)将结果输出出来。事实上,早期引擎概念不明确时,架构和素材的代码往往糅合在一起,很难具备复用性。后期的引擎才逐渐将其区分开来。
  人们希望将引擎变成一个通用软件,去运行几乎所有可以想象到的游戏内容。使用一个引擎制作任意类型的游戏,一直是引擎的发展方向。
  市面主流的引擎及其特点如下。
  (1)寒霜引擎
  寒霜引擎的特色是可以运作庞大而又有着丰富细节的游戏地图,同时可以利用较低的系统资源渲染地面、建筑、杂物的全破坏效果。使用寒霜引擎可以轻松地运行大规模的、所有物体都可破坏的游戏。采用寒霜引擎的游戏有《战地》系列、《使命召唤》。
  (2)虚幻4引擎——业内领先的商用引擎
  虚幻引擎是一套完整的创新、设计工具,能够满足艺术家的野心和愿景,同时也具备足够的灵活性,可满足不同规模的开发团队需求。在商用领域内,虚幻4引擎尤其强大,当前火爆的《绝地求生:刺激战场》、格斗游戏《街头霸王5》均采用此引擎,其优势在于强大的图形渲染能力和可扩展工具。
  (3)Creation引擎
  采用Creation引擎的游戏有《上古卷轴5:天际》《辐射4》。Creation引擎在远景绘制、光影细节方面性能惊人,几乎能够达到与现实无异的程度。
  (4)Unity3D引擎
  Unity3D引擎是一个跨平台游戏引擎,其擅长领域十分宽广,如移动端游戏、AR开发、移动仿真、VR应用、影视、教育等方面。Unity3D引擎的主要优势体现在学习成本低、跨平台应用范围广、移动端使用率高等方面,所以Unity3D引擎能在短时间内迅速占领移动端市场。在VR和AR方面,Unity3D引擎也长期占领各个平台50%以上的占有率。目前,全球有超过20家知名平台与Unity公司达成战略合作,所以Unity3D引擎前景是很好的。
  作为初学者,不需要对引擎的具体概念深入了解。只需要知道引擎是一个软件,它的产出是游戏程序、VR程序、AR程序即可。
  1.2Unity3D简介
  Unity3D是由Unity Technologies公司开发的用于轻松创建游戏和三维互动内容的跨平台游戏引擎。Unity引擎的创始人是三名年轻的游戏开发人员,分别是Joachim Ante、Nicholas Francis和David Helgaso,旨在开发一个易于使用、费用低廉的游戏引擎。他们于2005年6月发布了Unity 1.0,正式拉开了Unity引擎序幕。
  1.2.1Unity历史
  2005年6月,Unity 1.0发布。Unity 1.0是一个轻量级、可扩展的框架,初始版本发布在Mac OS上。
  2007年10月,Unity 2.0发布。
  2008年6月,Unity加入了对Wii平台的支持。
  2009年3月,Unity 2.5加入了对Windows系统的支持。
  2009年10月,Unity 2.6独立版开始免费。
  2010年9月,支持多平台的Unity 3.0发布,加入了对安卓平台的支持。
  2012年11月,Unity 4.0发布。
  2013年11月,Unity 4.3发布,加入了2D制作工具,标志着Unity可同时制作2D和3D游戏。
  2014年11月,Unity 4.6发布,集成了UGUI交互系统。
  2015年3月,Unity 5.0发布。
  2015年6月,Unity 5.1发布,加入了VR和AR的渲染通道。
  2015年9月,Unity 5.2发布,开始支持通用Windows平台(Windows Mobile、Windows 10、Xbox One),集成了Visual Studio。
  2015年12月,Unity 5.3发布,集成了IAP(集成内购,只是集成AppStore、Google Play),增加了多场景编辑功能。
  2016年7月,Unity 5.4发布,使用GPU实例化来减少DrawCall,集中修复和改善了VR相关功能。
  2016年11月,Unity 5.5发布,加入了对Hololens支持,编辑器内全息仿真。
  2017年3月,Unity 5.6发布,支持Google Daydream、Cardboard VR,并改进了Unity Multiplayer多人联网和NavMesh寻路AI。
  2017年7月,Unity 2017.1.0发布,变更了命名规则,开始使用年份命名,同时对于图像、NavMesh以及影视制作工具TimeLine进行了重大更新。
  2017年10月,Unity 2017.2.0发布,加入了一整套全新的2D工具,实现对XR、Vuforia、Windows混合现实的支持,并且对MacOS的OpenVR、Google ARCore、Apple ARKit都有良好的支持表现。
  2017年12月,Unity 2017.3.0发布,加入了程序集定义文件,可以使开发者进一步提升工作效率,减少脚本编译的时间;对Transform工具进行了更新;支持了大的Mesh;引入了新的Crunch纹理压缩库。
  2018年5月,Unity 2018.1.0发布,加入了可编程脚本渲染管线(SRP)、着色器可视化编程工具(ShaderGraph)、实用组件系统(ECS),移除了对Windows XP系统的支持,放弃了对MonoDevelop-Unity的支持。
  2018年7月,Unity 2018.2.0发布,加快了CPU渲染速度,使用了更轻量级的渲染管道。对SRP、渐进式Lightmapper、ShaderGraph进行改进,同时不再支持JavaScript,C#语言成了Unity唯一支持的语言。
  2018年12月,Unity 2018.3.0发布,改进了Prefab系统,可以对Prefab进行嵌套。同时为工程设置(Project Settings)和首选项(Preferences)增加了独立窗口。在Terrain和Timeline方面也有大幅度优化。
  Unity的版本还在不断更新中,功能将更加强大和完善。
  1.2.2Unity优势
  通过Unity版本的发展,可以发现Unity有如下几点优势。
  (1)全面整合的专业2D/3D引擎
  Unity几乎是一款“万能”引擎,几乎市面上所有游戏类型都
展开
目录
第一章Unity3D引擎初识|1
1.1什么是引擎1
1.1.1游戏1
1.1.2游戏引擎4
1.2Unity3D简介6
1.2.1Unity历史6
1.2.2Unity优势7
1.3Unity3D软件安装9
1.4新建和打开工程12
1.4.1启动Unity引擎12
1.4.2创建工程13
1.4.3面板介绍15
1.4.4其他功能23
1.5Scene视图操作24
1.5.1调整视角25
1.5.2对象操作26
1.6坐标系29
1.6.1常用坐标系29
1.6.2坐标轴颜色及简称32
1.73D理论基础32
1.7.1矢量和标量32
1.7.2向量的运算33
1.7.3帧速率34
第二章脚本组件|35
2.1工程与应用程序35
2.1.1工程35
2.1.2管理38
2.2面向组件开发38
2.2.1开发框架38
2.2.2常用组件41
2.3面向组件开发思想44
2.4脚本组件44
2.4.1创建脚本44
2.4.2打开脚本47
2.4.3编辑脚本48
2.5脚本组件生命周期49
2.5.1生命周期49
2.5.2脚本执行顺序51
2.6脚本中常用类52
2.6.1脚本组件的继承关系52
2.6.2GameObject类57
2.6.3Vector359
2.6.4Quaternion62
2.6.5Time类63
2.6.6Transform类64
2.6.7Mathf类69
2.7综合案例70
第三章物理引擎|74
3.1物理引擎简介74
3.2人机交互75
3.2.1Input类简介75
3.2.2传统设备输入控制75
3.2.3移动设备输入控制78
3.2.4陀螺仪的访问79
3.2.5键盘事件81
3.2.6鼠标事件82
3.3碰撞器组件83
3.3.1碰撞器组件介绍83
3.3.2物理材质85
3.4刚体组件86
3.4.1刚体组件介绍86
3.4.2刚体组件属性及方法87
3.4.3使用刚体添加爆炸力88
3.5碰撞事件以及回调90
3.5.1碰撞事件的条件91
3.5.2碰撞事件回调方法91
3.5.3碰撞检测频率92
3.6触发事件以及回调94
3.6.1触发事件的条件94
3.6.2触发事件回调方法94
3.6.3触发与碰撞的回调参数95
3.7射线96
3.7.1场景射线96
3.7.2相机射线98
3.7.3射线发射方法重载99
3.7.4其他形状射线101
3.7.5其他射线发射方法103
第四章Sprite精灵|105
4.1什么是Sprite精灵105
4.1.12D游戏105
4.1.22D游戏中的精灵106
4.2创建Sprite精灵107
4.2.1生成Sprite单个精灵107
4.2.2精灵切割109
4.2.3精灵打包115
4.3Sprite精灵动画118
4.3.1精灵动画的创建119
4.3.2精灵动画的使用122
4.4Sprite精灵与2D物理组件129
4.4.1Sprite精灵的物理效果129
4.4.2Sprite精灵碰撞事件131
4.4.3Sprite精灵触发与触发事件133
4.4.4动态力137
第五章UGUI系统|138
5.1图形用户界面(GUI)138
5.1.1什么是GUI138
5.1.2UGUI139
5.2UGUI对象的创建和使用140
5.2.1Text对象140
5.2.2Image对象143
5.2.3RawImage对象147
5.2.4Button对象148
5.2.5Slider对象153
5.2.6Scrollbar对象156
5.2.7Toggle对象157
5.2.8InputField对象160
5.3RectTransform组件162
5.3.1RectTransform介绍162
5.3.2轴点(Pivot)163
5.3.3锚点(Anchor)164
5.4画布(Canvas)166
5.5UGUI的布局169
5.6ScrollView(拖动效果)173
5.6.1ScrollView对象173
5.6.2ScrollRect组件173
5.6.3Viewport可视窗口174
5.7事件系统(EventSystem)177
5.7.1事件的回调方法178
5.7.2给事件添加回调方法的案例180
5.8综合案例185
5.8.1背包系统186
5.8.2小地图的制作197
5.8.3关卡选择201
第六章动画系统|214
6.1动画简介214
6.2导入动画资源214
6.2.1Rig装置选项卡215
6.2.2Animation动画选项卡216
6.3Mecanim动画系统219
6.3.1Mecanim简介219
6.3.2Mecanim的工作流程219
6.3.3Avatar骨骼系统220
6.3.4Animator组件222
6.3.5AnimatorController223
6.3.6动画融合树231
6.3.7动画事件236
6.3.8动画曲线240
6.3.9动画层242
6.3.10动画遮罩244
6.3.11IK动画248
第七章导航系统|251
7.1导航简介251
7.2Unity中的导航系统及实现原理251
7.2.1导航的使用流程251
7.2.2烘焙导航网格255
7.2.3导航组件的使用259
7.2.4脚本实现导航261
7.2.5分离路面导航264
7.2.6分层路面烘焙267
7.2.7动态路障270
第八章游戏特效|273
8.1游戏特效简介273
8.2粒子系统(ParticleSystem)274
8.2.1粒子系统简介274
8.2.2粒子组件参数275
8.2.3粒子系统成员285
8.3拖尾渲染285
8.4线性渲染288
8.5贴图融合292
第九章协程与WWW|297
9.1协程297
9.1.1概述297
9.1.2协程的原理297
9.1.3协程的使用298
9.1.4协程与线程304
9.2WWW305
9.2.1WWW概述305
9.2.2WWW类的常用属性305
9.2.3WWW类的使用305
9.2.4WWW中的Get方式与Post方式308
9.3下载队列封装309
9.3.1下载任务类310
9.3.2下载队列管理类314
9.3.3测试用例315
第十章数据存储|318
10.1数据存储定义318
10.1.1游戏中的数据318
10.1.2数据的持久化320
10.2PlayerPrefs类321
10.2.1存储机制321
10.2.2存储路径321
10.2.3常用方法321
10.2.4应用案例322
10.3XML数据格式文档324
10.3.1XML简介324
10.3.2XML特点及作用325
10.3.3XML基本概念325
10.3.4XML常用类326
10.3.5XML数据存取328
10.3.6XML的序列化与反序列化329
10.4JSON数据格式文档331
10.4.1JSON简介331
10.4.2JSON语法格式332
10.4.3Unity解析JSON的方式333
10.4.4Newtonsoft.Json库333
10.5SQLite本地数据库337
10.5.1SQLite数据库简介337
10.5.2SQLite数据库特点337
10.5.3SQL语句338
10.5.4SQLite图形化工具库340
10.5.5在Unity中使用SQLite343
第十一章动态资源加载|349
11.1游戏资源概述349
11.2Resources类349
11.2.1常用方法列表349
11.2.2Load()方法加载资源350
11.2.3注意事项350
11.2.4常见的资源类型350
11.3AssetBundle351
11.3.1AssetBundle的用途351
11.3.2使用AssetBundle的原因352
11.3.3Unity5.x方式打包资源352
11.3.4AssetBundle加载资源355
11.3.5AssetBundle卸载358
11.3.6Unity4.x方式打包资源360
11.4AssetBundle在项目中的应用362
11.4.1打包和加载资源362
11.4.2生成MD5清单367
11.4.3比对MD5369
第十二章高通AR|372
12.1导论372
12.1.1AR简介372
12.1.2AR应用场景373
12.1.3ARSDK选择375
12.2Vuforia基本流程376
12.2.1注册账号及AppLicenseKey申请377
12.2.2官方文档的使用378
12.2.3TargetManager379
12.3图片和模型识别384
12.3.1插件的获取384
12.3.2单图识别交互385
12.3.3声音交互389
12.3.4动画交互391
12.3.5颜色交互393
12.3.6多图识别394
12.3.7物体识别394
12.4简单相机控制398
12.4.1设置相机聚焦模式398
12.4.2切换前后相机399
12.4.3开启闪光灯400
12.5工程打包402
12.5.1配置Unity安卓环境402
12.5.2打包404
第十三章VR-HtcVive|407
13.1VR概述407
13.1.1VR关键技术407
13.1.2VR技术的应用领域408
13.1.3VR发展的限制因素409
13.1.4VR行业兴起及主流硬件409
13.1.5VR主流应用商店412
13.2SteamVR开发环境配置414
13.2.1硬件基本配置414
13.2.2安装HTCVive415
13.2.3Unity开发环境配置416
13.3SteamVR插件简单使用416
13.3.1简介416
13.3.2SteamVRPrefab简介417
13.3.3SteamVR插件的主要作用418
13.4SteamVR简单案例开发418
13.4.1输入控制418
13.4.2高级输入控制422
13.5Teleport系统426
13.5.1Teleport的基本概念426
13.5.2Teleport的适用场景426
13.5.3Teleport的分类427
13.5.4两种瞬移实现428
13.6Vive与UI交互433
13.6.12DUI和3DUI433
13.6.23DUI的实现方式433
13.7ViveControllerHaptic(手柄震动控制)435
13.7.1基本概念435
13.7.2使用场景435
13.7.3实现方式435
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证