Unity3D是一款跨平台3D、2D游戏及互动内容开发引擎,并有着广泛的影响力。随着近年增强现实和虚拟现实的兴起,很多增强现实和虚拟现实的技术提供方都提供了基于Unity3D的SDK包。可以预见,市场对Unity3D人才的需求将会大大增加。
本书共分为14章,详细讲解了Unity3D的安装、发布、界面等主要功能,并深入介绍AR(增强现实)、VR(虚拟现实)开发方法,以及地图定位、摄像机、声音播放等开发技巧,让读者了解到如何使用Unity3D制作AR\VR产品,快速进入Unity3D应用开发之门。
本书适合使用Unity3D平台开发AR\VR游戏和应用的移动开发人员,也适合高等院校和培训机构相关专业移动游戏开发方向的师生教学参考。
前言
Unity3D是由UnityTechnologies公司开发的一款跨平台的游戏行业软件,能够让用户轻松快速地创建互动游戏、实时动画等内容,并发布到苹果、安卓等多个平台。因其良好的生态及广泛的支持,使其在增强现实开发上也获得了众多厂商的青睐。很多增强现实提供商都提供了基于Unity3D的SDK包。
本书面向的读者大多是没有接触过Unity3D的初学者。读者可以通过该书快速地了解Unity3D以及增强现实的基本概念和一些实例,并且快速地参照例子制作出增强现实的作品。
本书内容介绍
本书包括14章内容,分别介绍如下。
第1~3章是Unity3D基础介绍。前3章内容快速介绍了Unity3D的基本知识、操作界面、基本概念等,让读者对于Unity3D有了一个总体的了解,并能进行一些基础的操作,代码编写。
第4~6章是增强现实开发。该部分介绍了增强现实的基本概念、一些优秀的实例,并详细讲解了用Unity3D和Vufoira、easyAR两款增强现实SDK开发图片识别显示3D模型视频的过程。
第7~9章是基于Vive的虚拟现实开发。该部分介绍了虚拟现实的基本概念,如何利用官方提供的SDK进行Vive的虚拟现实开发。其中详细讲解了两个不同的插件如何对Vive进行开发,包括基础按钮到常用按钮的传送、UI、拾取等。
第10章介绍了在安卓环境下,如何使用高德地图提供的定位功能进行开发。本章还介绍了如果在Unity3D下简单地调用Java和安卓类的方法属性。
第11~14章是其他Unity3D相关的内容。该部分介绍了Unity3D开发过程中常用的一些代码片段及一些常用的Unity3D插件,包括常用摄像机、声音控制等。
本书示例代码及资料内容如下:
?增强现实介绍及相关的视频(英文)
?导出安卓需要的SDK
?VuforiaSDK及官方示例,相关图片
?EasyARSDK及官方示例
?高德地图安卓定位插件及示例
?Unity3D常用代码
?Vive增强现实开发例子
本书代码下载地址
http://pan.baidu.com/s/1pLDEvbH(注意数字和字母大小写)
如果代码下载有问题,请联系电子邮箱booksaga@163.com,邮件主题为“AR代码”。
本书阅读过程中,如有疑问,可以发邮件至5140075@qq.com,或者访问作者的技术博客http://blog.csdn.net/wuyt2008并留言,以获得帮助。
吴雁涛
2017年7月
吴雁涛,网络游戏开发工程师,有多年的教学经验。
目录
第1章Unity的基本介绍1
1.1功能特点1
1.1.1Unity简介1
1.1.2Unity的特点1
1.2版本及费用2
1.3下载和安装2
1.3.1下载2
1.3.2安装3
1.3.3第一次运行7
1.4商城内容和官方资源8
第2章Unity主要界面介绍11
2.1理解Unity项目的结构11
2.2启动界面12
2.3默认界面13
2.4Game(游戏)视图14
2.5Scene(场景)视图15
2.6Hierarchy(层级)视图16
2.7Inspector(检视)视图17
2.8Project(项目)视图18
2.9Console(控制台)视图21
第3章Unity快速入门22
3.1场景22
3.1.1场景和项目22
3.1.2理解项目和场景24
3.2摄像机24
3.3游戏对象27
3.4预制件29
3.5组件31
3.6其他常用内容32
3.6.13D模型32
3.6.2刚体33
3.6.3重力35
3.6.4物理特性36
3.6.5穿透38
3.6.6粒子系统38
3.7UnityGUI40
3.7.1RenderMode显示模式41
3.7.2定位方式43
3.7.3响应脚本44
3.8脚本47
3.8.1基本介绍47
3.8.2MonoBehaviour48
3.8.3Transform49
3.8.4GameObject50
3.8.5常用事件51
3.8.6Instantiate52
3.8.7Destory53
3.8.8获取指定游戏对象或组件55
3.8.9指定平台57
3.8.10DontDestroyOnLoad58
3.8.11SendMessage58
3.8.12场景切换60
3.9资源包的导入和导出61
3.9.1导入资源包61
3.9.2导出资源包62
3.10发布应用64
3.10.1发布Windows应用65
3.10.2发布Android应用66
3.10.3发布iOS应用71
3.11Unity商城资源下载和导入74
第4章增强现实介绍76
4.1基本概念76
4.2主流实现方式76
4.3典型案例78
4.4常用增强现实SDK81
4.5其他83
第5章基于VuforiaSDK的增强现实开发85
5.1Vuforia简介85
5.2准备工作85
5.2.1注册账号85
5.2.2下载SDK86
5.2.3添加key87
5.2.4添加数据库89
5.3识别图片显示3D模型89
5.3.1添加识别图片89
5.3.2下载识别数据93
5.3.3建立场景93
5.3.4设置游戏对象95
5.3.5测试96
5.4识别柱体显示3D模型96
5.4.1添加识别柱体96
5.4.2下载识别数据99
5.4.3建立场景99
5.4.4设置游戏对象101
5.4.5测试103
5.5识别物体显示3D模型103
5.5.1下载VuforiaObjectScanner并打印图片103
5.5.2扫描物体104
5.5.3添加识别物体106
5.5.4下载识别数据107
5.5.5建立场景108
5.5.6设置游戏对象109
5.5.7测试110
5.6识别图片播放视频111
5.6.1下载例子111
5.6.2导入例子和数据112
5.6.3建立场景112
5.6.4设置游戏对象115
5.6.5测试117
第6章基于EasyARSDK的增强现实开发118
6.1EasyAR简介118
6.2获得key118
6.3下载开发包119
6.4识别图片显示3D内容120
6.4.1新建场景120
6.4.2替换添加脚本123
6.4.3设置游戏对象125
6.4.4运行测试127
6.5识别图片并将图片映射为3D模型纹理(涂涂乐)128
6.5.1准备工作128
6.5.2设置模型纹理128
6.5.3运行测试130
6.6识别图片播放视频130
6.6.1准备工作130
6.6.2添加用于播放视频的3D物体131
6.6.3运行测试133
6.7打包安卓的注意事项133
第7章虚拟现实简介134
7.1虚拟现实基本概念134
7.2常见的几种VR硬件134
7.3HTCVive介绍136
7.4HTCVive的手柄137
7.5Vive上的VR应用介绍137
7.6基于Vive的VR开发常见的几个问题139
第8章基于InputUtility插件的虚拟现实开发141
8.1基于InputUtility插件开发141
8.2SDK下载141
8.3按钮开发综述142
8.4Trigger按钮开发144
8.5Pad按钮开发145
8.6操作GUI146
8.7拖动远处的3D物体150
8.8传送152
8.9物体拾取和触碰158
第9章基于InteractionSystem的虚拟现实开发165
9.1InteractionSystem插件及SDK下载165
9.2按钮控制166
9.3基础碰触169
9.4物体拾取174
9.5传送180
9.6操作UI185
9.7道具拾取189
9.8按钮提示显示196
第10章高德地图Android定位SDK在Unity下的简单使用200
10.1Unity简单调用Java类200
10.2高德地图key的获取207
10.3安全码SHA1获取210
10.4准备Jar211
10.5导入Unity214
10.6获取定位信息214
10.6.1获取定位信息的脚本214
10.6.2添加调用脚本221
10.6.3测试224
10.6.4插件224
10.7获取地图225
10.7.1说明225
10.7.2脚本226
10.7.3场景226
10.7.4打包运行228
第11章Unity3D摄像机开发229
11.1常用的几种摄像机229
11.1.1CctvCamera230
11.1.2HandHeldCamera233
11.1.3MultipurposeCameraRig236
11.1.4FreeLookCameraRig240
11.1.5第一人称视角243
11.1.6DungeonCamera244
11.1.7LookAtCamera248
11.2双摄像机249
第12章声音播放255
12.1AudioClip、AudioSource、AudioListener255
12.1.1AudioClip255
12.1.2AudioSource256
12.1.3AudioListener256
12.2播放背景音乐257
12.3控制背景声音音量259
12.4播放特效声音262
12.5控制特效音量268
第13章Unity3D服务器端和客户端通信276
13.1服务器端和客户端通信概述276
13.2服务器端和客户端通信实例276
第14章其他Unity3D相关的内容286
14.1带进度条的场景切换286
14.2单一数据存储287
14.3少量初始数据的存储288
14.3.1将数据存储在预制件里289
14.3.2利用ScriptableObject将数据存储为资源290
14.4用iTween插件进行移动、缩放、旋转操作293
14.4.1下载并导入插件293
14.4.2iTween的基本调用294
14.4.3iTween常见参数介绍294
14.4.4iTween实现移动295
14.4.5iTween实现旋转295
14.4.6iTween实现大小变化296
14.4.7iTween的变化值297
14.4.8iTweenVisualEditor导入299
14.4.9iTweenVisualEditor控制变化300
14.4.10iTweenVisualEditor指定运动路径302
14.5插件推荐305
第7章
?虚拟现实简介?
7.1虚拟现实基本概念
虚拟现实,英文VirtualReality,简称VR,是利用计算机系统生成一个模拟环境,提供使用者关于视觉、听觉、触觉等感官的模拟,让使用者如同身历其境一般,可以及时、没有限制地观察模拟环境内的事物。
全景照片、全景视频和全景漫游是否算VR?这个还是有一些争论。不过,一般技术人员默认的VR不包括上述三种,而是专指由计算机3D模型生成虚拟环境的这种情况。
7.2常见的几种VR硬件
1.眼镜盒
以googlecardboard为代表,单纯的头戴式的VR设备。最常见的是将手机插入眼镜盒,利用手机屏幕播放内容,并提供运算。区别更多的只是盒子是纸做的还是塑料做的,戴着是否舒服。早期的Oculus也是这类,虽然是利用计算机运算,但是也只有一个眼镜盒,如图7-1所示。