- Unity 5.X 3D游戏开发技术详解与典型案例
- 吴亚峰 索依娜
- 11201字
- 2020-06-27 12:27:00
第1章 Unity基础以及开发环境的搭建
本章主要向读者介绍Unity的基础知识及Unity集成开发环境的安装,使读者对Unity有一个大致的了解。通过将本书附带光盘中的各个项目案例导入到自己的计算机上并运行,读者可以在Unity中进行效果预览和其他操作。
1.1 Unity基础知识概览
本节主要向读者介绍 Unity的发展历史及其别具一格的特点,主要内容包括 Unity的简介、Unity的诞生及发展、Unity广阔的市场前景和Unity的特点等。通过本节的学习,读者将对Unity有一个基本的认识。
1.1.1 初识Unity
Unity是由Unity Technologies开发的一个能够轻松创建三维视频游戏、建筑可视化及实时三维动画等互动内容的、多平台的综合型开发工具,也是一个全面整合的专业游戏引擎。通过Unity简单的用户界面,用户可以完成几乎所有工作。
Unity类似于Director、Blender Game Engine、Virtools和 Torque Game Builder等利用交互的图形化开发环境为首要方式的3D游戏引擎软件。
其编辑器运行在Windows和Mac OS X下,可发布游戏至Windows、Mac、Wii、iPhone和Android平台,也可以利用Unity Web Player插件发布网页游戏,支持Mac和Windows的网页浏览。Unity的网页播放器也被Mac Widgets所支持。
1.1.2 Unity的诞生及发展
Unity现在已经是移动游戏领域较为优秀的游戏引擎,能从诞生到现在不到10年的时间取得如此成绩,Unity可谓是生逢其时。本节为了让读者对 Unity有更进一步的了解,将为读者介绍Unity的发展史。
❑2005年6月,Unity 1.0发布。Unity 1.0是一个轻量级、可扩展的依赖注入容器,有助于创建松散耦合的系统。它支持构建子注入(Constructor Injection)、属性/设值方法注入(Property/Setter Injection)和方法调用注入(Method Call Injection)。
❑2009年3月,Unity 2.5加入了对Windows的支持。Unity 2.5完全支持Windows Vista与Windows XP的全部功能和互操作性,而且Mac OS X中的Unity编辑器也已经重建,在外观和功能上都形成了统一。Unity 2.5的优点就是Unity几乎可以在所有平台上建立任何游戏,实现了真正的跨平台。
❑2009年10月,Unity 2.6独立版开始免费。Unity 2.6支持了许多的外部版本控制系统,如Subversion、Perforce、Bazaar以及其他的VCS系统等。除此之外,Unity 2.6与Visual Studio完整的一体化也增加了Unity自动同步Visual Studio项目的源代码,实现了所有脚本的解决方案和智能配置。
❑2010年9月,支持多平台的Unity 3.0发布。其新增加的功能有:方便编辑桌面左侧的快速启动栏、增加支持Ubuntu 12.04、更改桌面主题和在dash中隐藏“可下载的软件”类别等。
❑2012年2月,Unity Technologies发布了Unity 3.5。Unity 3.5提供了大量的新增功能和改进功能。所有使用Unity3.0或更高版本的用户均可免费升级到Unity 3.5。
❑2012年11月,Unity Technologies公司正式推出Unity 4.0,新加入对DirectX 11的支持和全新的Mecanim动画工具,支持移动平台的动态阴影,减少了移动平台Mesh内存消耗,支持动态字体渲染,并为用户提供了Linux及Adobe Flash Player的部署预览功能。
❑2013年11月,Unity 4.3发布。同时Unity正式发布2D工具,这标志着Unity不再是单一的3D工具,而是真正地实现了同时支持二维和三维内容的开发和发布。发布2D工具的预告已经让Unity开发者兴奋不已,这也正是开发者长久以来所期待的。
❑2014年11月,Unity 4.6发布,加入了新的UI系统,Unity开发者可以使用基于UI框架和视觉工具的Unity强大的新组件来设计游戏或应用程序。
❑2015年3月,Unity Technologies在GDC2015上正式发布了Unity 5.0, Unity首席执行官John Riccitiello表示,Unity 5.0是Unity发展史上的重要里程碑。Unity 5.0实现了实时全局光照,加入了对WebGL的支持,实现了完全的多线程。
❑2015年6月,Unity 5.1发布,加入了为VR和AR设备优化的渲染管道,可直接插入Oculus Rift开发机进行测试。头部追踪和景深FOV都会自动地应用到摄像头。
1.1.3 Unity广阔的市场前景
近几年来,Android平台游戏、iPhone平台游戏以及Web的网页游戏发展迅猛,已然成为带动游戏业发展的新生力量。遗憾的是,目前除了少数的作品获得成功外,大部分的游戏都属于宣传攻势大于内容品质的平庸之作。
面对这种局面,3D 游戏成为独辟蹊径的一种选择。而为3D 游戏研发提供强大技术支持的Unity引擎,对DirectX和OpenGL拥有高度优化的图形渲染管道,以其创造高质量的3D游戏和真实视觉效果的核心技术,为开发3D游戏提供了强大的源动力。
提示
Unity游戏引擎后来居上,在近两年发行的几款风靡一时的iOS和Android平台上的游戏,如《时空之刃》《炉石传说》《我叫MT 2》等都选择了这款游戏引擎。
Unity不仅在游戏领域里有广阔的应用,其还可以用于3D虚拟仿真、大型产品3D展示、3D虚拟展会、3D场景导航以及一些精密仪器使用方法的演示等,应用领域非常广泛。
Unity游戏引擎技术研讨会最早于2011年5月在韩国举行。据悉,现在10种以上的新引擎开发,都是采用了Unity游戏引擎技术。已有部分开发商利用China Joy展会的契机,展示了其所开发的新引擎的运行效果,目前已有不少厂商与开发商签订了提前预定引擎的协议。
提示
Unity引擎可以帮助开发人员制作出炫丼的3D效果,幵实时生成查看,目前已推出了对应iPhone、iPad、Android、Android TV、Tizen、PC、Mac、Flash Player、WebGL、Wii U、PS3、PS4、PS Vita、XBox360、XBox One、Oculus Rift、Gear VR、Hololens等平台的版本,促进了游戏跨平台的应用。读者要做的只是在编辑器中选择使用哪一个平台来预览游戏作品。
未来几年将会是Unity大行其道的时代:因其开发群体的迅速扩大,Wed Player装机率的快速上升,使Unity迅速爆发的时机已经到了。在此引用业内知名人士的一句话:“不要再对所谓的Flash 3D抱有什么希望,也不要再去花心思学习那些杂七杂八的Flash3 D插件,赶紧学习Unity才是正道”。
1.1.4 独具特色的Unity
通过前面的学习,相信读者已经对Unity了一个基本的认识。Unity在游戏开发领域用其独特而强大的技术理念征服了全球众多的业界公司及游戏开发者。在本节中,将为读者介绍 Unity的特点,帮助读者进一步学习Unity。
1.Unity本身所具有的特点
❑综合编辑
Unity用户界面是简单的、层级式的综合开发环境,具备视觉化编辑、详细的属性编辑器和动态的游戏预览特性。由于其强大的综合编辑特性,Unity也被用来快速制作游戏或者开发游戏原型。效果如图1-1所示。
▲图1-1 综合编辑
❑图形引擎
Unity的图形引擎使用的是Direct3D(Windows)、OpenGL(Mac, Windows)和自有的APIs(Wii)。可以支持Bump Mapping、Reflection Mapping、Parallax Mapping、Screen Space Ambient Occlusion、动态阴影所使用的Shadow Map技术与Render-to-texutre和全屏 Post Processing效果。
❑资源导入
项目中的资源会被自动导入,并根据资源的改动自动更新。虽然很多主流的三维建模软件为Unity所支持,不过对于3ds Max、Maya、Blender、Cinema 4D和Cheetah3D的支持效果比较好,并支持一些其他的三维格式。
❑一键部署
Unity可开发微软Microsoft Windows和Mac OS X 的可执行文件,在线内容通过Unity Web Player插件支持Internet Explorer、Mozilla、Netscape、Opera和 Camino、Mac OS X的Dashboard工具,但是Wii程序和iPhone应用程序的开发需要用户购买额外的授权,在价格上有所不同,如图1-2所示。
▲图1-2 一键部署
❑着色器(Shader)
着色语言编写使用ShaderLab语言,同时支持自有工作流中的编程方式或Cg、GLSL语言编写的着色文件。Shader对游戏画面的控制力就好比在Photoshop中编辑数码照片,在资深者手中可以营造出各种惊人的画面效果。图1-3所示为Unity经典游戏“愤怒的机器人”场景中的Shader应用效果。
▲图1-3 游戏“愤怒的机器人”场景中的Shader应用效果
一个Shader可以包含众多变量及一个参数接口,允许Unity去判定参数是否为当前所支持并适配最适合参数,并选择相应的shader类型以获得广大的兼容性。因此,Unity的着色器系统具有易用、灵活和高性能的特性。
❑地形编辑器
Unity内建强大的地形编辑器,支持地形创建和树木与植被贴片,还支持自动的地形 LOD,而且还支持水面特效,尤其是低端硬件亦可流畅运行广阔茂盛的植被景观,还可用Tree Create来编辑树木的各部位细节。如图1-4和图1-5所示。
▲图1-4 地形1
▲图1-5 地形2
❑联网
现在大部分的游戏都是联网的。令人惊喜的是,Unity内置了强大的多人联网游戏引擎,具有 Unity自带的客户端和服务器端,省去了并发、多任务等一系列烦琐而困难的操作,可以简单地完成所需的任务。其多人网络连线采用Raknet,可以从单人游戏到全实时多人游戏。
❑物理特效
物理引擎是模拟牛顿力学模型的一个计算机程序,使用质量、速度、摩擦力和空气阻力等变量。来预测各种不同情况下的效果。Unity内置NVIDIA强大的PhysX物理引擎,可以方便、准确地开发出所需要的物理特效。
PhysX可以由CPU计算,但其程序本身在设计上还可以调用独立的浮点处理器(如GPU和PPU)来计算,也正因为如此,它可以轻松地完成像流体力学模拟那样的大计算量的物理模拟计算。并且PhysX物理引擎还可以在包括Windows、Linux、Xbox360、Mac、Android等在内的全平台上运行。
❑音频和视频
音效系统基于OpenAL程式库,可以播放Ogg Vorbis的压缩音效。视频播放采用Theora编码,并支持实时三维图形混合音频流和视频流。
OpenAL 主要的功能是在来源物体、音效缓冲和收听者中编码。来源物体包含一个指向缓冲区的指标、声音的速度、位置和方向,以及声音强度。收听者物体包含收听者的速度、位置和方向,以及全部声音的整体增益。缓冲里包含8或16位元、单声道或立体声PCM格式的音效资料,引擎进行所有必要的计算,如距离衰减、多普勒效应等。
❑脚本
游戏脚本为基于Mono的Mono脚本,是一个基于.NET Framework的开源语言,因此,程序员可用JavaScript、C#加以编写。如图1-6所示。
▲图1-6 脚本
提示
由于JavaScript和C#脚本语言是目前Unity开发中比较流行的语言,同时,考虑到脚本语言的通用性,因此,本书采用JavaScript和C#两种脚本语言编写脚本,给读者带来更多的便利。
❑Unity资源服务器
Unity资源服务器具有一个支持各种游戏和脚本版本的控制方案,使用PostgreSql作为后端。其可以保证在开发过程中的多人并行开发,使不同的开发人员在使用不同版本的开发工具时所编写的脚本能够顺利的集成。
❑真实的光影效果
Unity提供了具有柔和阴影与lightmaps的高度完善的光影渲染系统。光照图(lightmap)是包含了视频游戏中面的光照信息的一种三维引擎的光强数据。光照图是预先计算好的,而且要用在静态目标上。
Unity 5融入了Geomerics行业领先的实时全局光照技术Enlighten。Enlighten是目前仅有的,为实现PC、主机和移动游戏中的完全动态光照效果而进行了优化的实时全局光照技术。Enlighten的实时技术也极大地改善了工作流程,使美工和设计师能够直接在 Unity 5编辑器中为所有游戏风格创建引人入胜的逼真视觉效果。Enlighten实时全局光照效果如图1-7所示。
▲图1-7 Enlighten实时全局光照效果图
说明
静态目标(static objects)在三维引擎里是区别于动态目标(dynamic object)的一种分类。
❑集成2D游戏开发工具
2D游戏在当今的游戏市场仍然占据着很大的市场份额,尤其是对于移动设备(如手机、平板电脑等),2D游戏仍然是一种主要的开发方式。针对这种情况,Unity在4.3版本以后正式加入了Unity 2D游戏开发工具集。
使用Unity 2D游戏开发工具集可以非常方便地开发2D游戏,利用工具集中的2D游戏换帧动画图片的制作工具可以快速地制作2D游戏换帧动画。Unity为2D游戏开发集成了Box2D物理引擎并提供的一系列2D物理组件,通过这些组件可以非常简单地在2D游戏中实现物理特性。
2.Unity的跨平台特性
Unity类似于Director、Blender Game Engine、Virtools或Torque Game Builder等利用交互的图形化开发环境为首要方式的软件。其编辑器运行在 Windows和 Mac OS X 下,可发布游戏至Windows、Mac、Wii、iPhone和Android平台,也可以利用Unity Web Player插件发布网页游戏,支持Mac和Windows的网页浏览。
现在市面上已经推出了很多由Unity开发的基于Android平台、iPhone平台的游戏和大型的3D网页游戏,这些游戏都得到了很高评价。接下来将分别为读者介绍这3类游戏。
❑基于Android平台的游戏
Unity可以基于Android平台进行游戏开发。由于Unity自身存在的优势,因此,通过它开发的游戏也总是能让人赏心悦目并赞不绝口。
例如,《捣蛋猪》是Rovio Entertainment继《愤怒的小鸟》之后的又一款力作,如图1-8所示;由天美艺游工作室开发的《天天飞车》,如图1-9所示;由 GluMobile开发的《血之荣耀》,如图1-10所示;由蓝港在线开发的《王者之剑》,如图1-11所示。
▲图1-8 《捣蛋猪》
▲图1-9 《天天飞车》
▲图1-10 《血之荣耀》
▲图1-11 《王者之剑》
❑基于iPhone平台的游戏
Unity也可以基于iPhone平台进行游戏开发,由于其自身存在的优势,可以制作出绚丽多彩的iPhone平台游戏。
例如,由Imangi Studios开发的跑酷类视频游戏《神庙逃亡2》,如图1-12所示;由Defiant Development Pty.Ltd开发的《滑雪大冒险》,如图1-13所示;由YANSHU SUN开发的《崩坏学园》,如图1-14所示;由Crescent Moon Games LLC开发的Slingshot Racing,如图1-15所示。
▲图1-12 《神庙逃亡2》
▲图1-13 《滑雪大冒险》
▲图1-14 《崩坏学园》
▲图1-15 《Slingshot Racing》
❑基于Web的大型3D网页游戏
同样,Unity也可以开发基于 Web的大型3D 网页游戏。网页类游戏不用下载客户端,也是近几年比较流行的一种游戏类型,市面上已经推出了很多这样的3D网页游戏。
例如,《新仙剑奇侠传online》是骏梦游戏的最新力作,如图1-16所示;由上海友齐开发的《坦克英雄》,如图1-17所示;《绝代双骄》是由开发商昆仑在线开发的一款全新网页游戏,如图1-18所示;《蒸汽之城》是厦门梦加网络科技有限公司开发的一款3D网页MMORPG,如图1-19所示。
▲图1-16 《新仙剑奇侠传online》
▲图1-17 《坦克英雄》
▲图1-18 《绝代双骄》
▲图1-19 《蒸汽之城》
Unity基础知识到这里介绍完毕,接下来将详细介绍Unity中开发环境的搭建,这是进行Unity开发的第一步。通过讲解Unity集成开发环境的安装和将目标平台的SDK集成到Unity,使读者可以顺利地进入Unity集成开发环境。
1.2 Unity开发环境的搭建
本节将介绍Unity集成开发环境的搭建。开发环境的搭建分为两个步骤:Unity集成开发环境的安装和目标平台的SDK与Unity的集成(其中,包括在Windows平台下安装Android SDK和在Mac OS平台下安装SDK)。
1.2.1 Windows平台下Unity的下载及安装
本节将主要讲述如何在Windows平台下搭建Unity的集成开发环境,包括如何从Unity官网下载Windows平台下使用的Unity游戏开发引擎,以及如何安装下载好的Unity安装程序。具体的操作步骤如下。
(1)首先登录到Unity官方网站http://unity3d.com下载Unity的安装程序。将Unity官方网站首页拖至最底部,如图1-20所示,在“下载”栏中单击“Unity”超链接,网页跳转到新版Unity的版本比较页面,该页面展示了专业版和个人版的功能区别。再将网页拖至底部,在“资源”栏中单击“Unity旧版本”超链接,如图1-21所示。
▲图1-20 Unity官方网站首页
▲图1-21 新版Unity的版本比较页面
提示
由于Unity官网的默认语言为英语,所以打开页面后内容全部为英文。语言选项在网页最底部的右下角处,读者可根据个人需要选择合适的语言。
(2)单击“Unity旧版本”超链接后,网页跳转到Unity的下载存档页面,在该页面下可以下载最新版本和以前版本的Unity。这里选择5.1.1版本的Unity,如图1-22所示;单击右侧的“下载(Win)”会出现下拉菜单,如图1-23所示,笔者在这里选择第二项。
▲图1-22 Unity的下载存档
▲图1-23 Unity下载选项
(3)双击下载好的Unity安装程序UnitySetup64.exe,会打开Welcome to the Unity 5.1.1f1(64-bit)Setup窗口,如图1-24所示。单击Next按钮进入License Agreement窗口,如图1-25所示。
▲图1-24 Welcome to the Unity 5.1.1f1 64-bit Setup窗口
▲图1-25 License Agreement窗口
(4)在License Agreement窗口,单击I Agree按钮进入Choose Components窗口,如图1-26所示。然后在Choose Components窗口,将可选项全部选中并单击Next按钮进入Choose Install Location窗口,如图1-27所示。
▲图1-26 Choose Components窗口
▲图1-27 Choose Install Location窗口
(5)在Choose Install Location窗口,选择好安装路径(本书以默认路径为例),单击Install按钮进行安装,将进入Installing窗口,如图1-28所示。进入Installing窗口后(这是Unity的安装过程)会需要一定的时间,请耐心等待。
▲图1-28 Installing窗口
(6)安装结束,会跳转到Finsh窗口(见图1-29),单击Finsh按钮即可(如果选中Run Unity 5.1.1f1选项,则单击Finsh按钮就会跳转到Activate your license窗口),此时桌面上会出现一个Unity.exe的快捷方式,如图1-30所示。
▲图1-29 Finsh窗口
▲图1-30 Unity.exe的快捷方式
(7)如果没有选中Run Unity 5.1.1f1选项,则双击桌面上Unity.exe的快捷方式,也将会跳转到Activate your license窗口,如图1-31所示。此时,勾选Unity 5 Professional Edtion即选择使用专业版,勾选“Unity 5 Personal Edtion”则为选择使用个人版。在选择版本后,单击OK按钮进行下一步。
▲图1-31 Activate your license窗口
提示
选择使用专业版需要序列号,有序列号的用户可以选择该项然后输入序列号,没有序列号的用户可以到官方网站购买。选择使用个人版的用户,需要在官方网站注册一个账户,通过账户激活 Unity。个人版有诸多限制,许多功能都不能够在该版本中使用,不建议选择该版本。
(8)使用个人版的用户需要在Log into your Unity Account窗口下填入账户相关信息,如图1-32所示。然后单击OK按钮,进入Unity公司的调查问卷窗口,如图1-33所示。完成调查问卷后,单击OK按钮,跳转到启动窗口,如图1-34所示。
▲图1-32 Log into your Unity Account窗口
▲图1-33 调查问卷窗口
▲图1-34 Unity启动窗口
提示
注册必须在联网的前提下才能进行操作。没有Unity账户的用户可以单击Create Account按钮(见图1-32)注册一个账户,注册完后必须登录注册所使用的邮箱确认注册。由于篇幅的限制,这里不再赘述注册账户的过程。
(9)进入启动窗口后,单击图1-34中所示的Start using Unity按钮进入选择项目窗口,如图1-35所示。选择Create New Project选项,这里的工程路径选择默认路径,然后单击Create按钮就可进入Unity集成开发环境,如图1-36所示。
▲图1-35 项目选择窗口
▲图1-36 Unity集成开发环境
提示
Unity的安装要求操作系统为 Windows XP SP2以上、Windows 7 SP1以上、Windows8,不支持Windows Vista; GPU要求有DX9(着色器模型2.0)功能的显卡,2004年以后的产品都可以。对于整体要求,现在所使用的计算机以上两点都满足。
1.2.2 Mac OS平台下Unity的下载及安装
上一节介绍了如何在 Windows平台下搭建 Unity的集成开发环境,本节将具体介绍如何在Mac OS平台下下载Mac版的Unity游戏开发引擎安装程序,以及如何安装下载好的Mac版Unity安装程序。具体的操作步骤如下。
(1)Mac OS平台下Unity的下载与Windows大致相同,故省略前面的打开网页步骤,直接从下载存档页面开始介绍这里选择5.0.1版本的Unity,如图1-37所示。单击右侧的“下载(Mac)”会出现下拉菜单,如图1-38所示。下拉菜单的前两项分别为下载Unity下载助手、下载Unity安装程序。读者可根据个人情况选择下载,笔者在这里选择第二项。
▲图1-37 Unity的下载存档
▲图1-38 Unity下载选项
(2)完成下载后,开始安装Unity。首先双击下载好的Unity安装文件Unity.pkg,会弹出Unity的安装窗口,如图1-39所示。单击继续按钮,会弹出软件许可协议窗口,如图1-40所示。
▲图1-39 Unity安装窗口
▲图1-40 软件许可协议窗口
(3)阅读完 Unity的安装许可协议后,单击继续按钮,会弹出小窗口提示用户是否同意软件许可协议,如图1-41所示,单击同意按钮来继续安装。在目的宗卷窗口下,选择要安装Unity的磁盘,单击继续按钮,如图1-42所示。
▲图1-41 软件许可协议确认窗口
▲图1-42 目的宗卷窗口
(4)在安装确认窗口上,显示了Unity将占用计算机上5.27GB的存储空间,如图1-43所示。如不需要更改安装位置,则单击安装按钮开始进行安装,此时会弹出安装准备窗口,如图1-44所示。
▲图1-43 安装确认窗口
▲图1-44 安装准备窗口
(5)准备工作完成后,安装程序会自动开始安装工作,如图1-45所示。在此期间用户无需进行其他操作,只需要耐心等待即可。当安装工作完成后,会弹出安装成功窗口,如图1-46所示。单击关闭按钮,完成安装。
▲图1-45 安装进行窗口
▲图1-46 “安装成功”窗口
(6)完成安装后,在已安装的应用中找到Unity,单击图标,打开程序。首次打开Unity需要进行激活,具体激活方式与Windows下的方式相同,由于篇幅的限制,这里不再赘述具体过程,读者可参考前面的介绍。激活窗口如图1-47和图1-48所示。
▲图1-47 许可证激活窗口
▲图1-48 登录账户窗口
(7)完成激活后,会弹出启动窗口,如图1-49所示。单击Start using Unity按钮进入选择项目窗口,如图1-50所示。新建项目时,重命名项目名称,这里的工程路径选择默认路径,然后单击Create按钮进入Unity开发环境,如图1-51所示。
▲图1-49 Unity启动窗口
▲图1-50 选择项目窗口
▲图1-51 Unity开发环境
1.2.3 目标平台的SDK与Unity集成
前面已经对 Unity这个游戏引擎进行了简单的介绍,由于它可发布游戏至 Window、Mac、Wii、iPhone和 Android平台,因此在不同的平台下,需要下载、安装与集成目标平台的SDK。本节将详细地为读者介绍如何把目标平台的SDK集成到Unity。
1.Android的SDK下载安装与集成
前面已经对Unity 3D这个游戏引擎的下载和安装进行了详细的介绍,从本节开始,将为大家介绍Android平台下的SDK安装与集成,具体的步骤如下。
说明
由于Android是基于Java的,所以要先安装JDK。
(1)登录到ORACLE官方网站http://www.oracle.com/technetwork/java/index.html下载最新的JDK。双击刚刚下载的JDK安装程序jdk-7u25-windows-x64.exe,根据提示将JDK安装到默认目录下。
(2)右键单击我的电脑,依次选择属性/高级/环境变量,在系统变量中新建一个名为“JAVA_HOME”的环境变量,设置该变量的值为“C:\Program Files\Java\jdk1.7.0_07”,如图1-52所示。再打开Path环境变量,在最后加上“C:\Program Files\Java\jdk1.7.0_07\bin;”,单击确定按钮即可。
▲图1-52 JDK环境变量配置
(3)到http://developer.android.com页面下载Android的SDK,本书使用的版本是5.0,其他版本的安装与配置方法基本相同。将下载好的SDK压缩包解压到任意盘的根目录下,笔者将SDK放在了F盘根目录下,如图1-53所示。
▲图1-53 SDK的安装目录图
(4)右键单击我的电脑,依次选择属性/高级/环境变量,打开 Path系统环境变量,在最后加上SDK的解压目录中的tools目录“F:\sdk\tools”,然后单击确定按钮完成配置。如图1-54所示。
▲图1-54 SDK环境变量配置
(5)进入Unity集成开发环境,依次单击菜单栏命令“Edit→Preferences”,如图1-55所示,在弹出的新对话框Unity Preferences中选择External Tools选项,选择正确的Android SDK路径,如图1-56所示。
▲图1-55 Edit
▲图1-56 Unity Preferences对话框
2.iPhone SDK的下载安装与集成
由于Unity是跨平台的,所以对于Unity而言,在iPhone平台下同样能够正常运行。iPhone的SDK下载、安装和集成与Android的SDK下载、安装和集成大体相同。
(1)登录Apple Developer Connection的网站http://developer.apple.com/iphone下载SDK。网站如图1-57所示。
▲图1-57 Apple Develper Connection网站
(2)如果已经有Apple ID了,则只需填写好账号和密码,单击Sign In按钮登录。登录界面如图1-58所示。
▲图1-58 登录界面
(3)若还没有Apple ID,则需先创建一个,创建账号是免费的。在注册信息界面,所有必需填写的信息都要填写正确,最好用英文。注册信息界面如图1-59所示。
▲图1-59 注册信息界面
(4)注册结束并成功登录后,下载iPhone SDK。整个发布包约2GB大小,因此最好通过高速Internet连接来下载,这样可以提高下载速度。SDK是以磁盘镜像文件的形式提供的,默认保存在Downloads文件夹下。如图1-60所示。
▲图1-60 注册结束,下载iPhone SDK
(5)双击此磁盘镜像文件即可进行加载。加载后就会看到一个名为“iPhone SDK”的卷。打开这个卷会出现一个显示该卷内容的窗口。在此窗口中,能看到一个名为“iPhone SDK”的包。双击此包即可开始安装过程。同意了若干许可条款后,安装就可结束。
提示
确保选择了iPhone SDK这一项,然后单击Continue按钮。安装程序会将Xcode和iPhone SDK安装到计算机桌面的/Developer目录下。
1.3 第一个Unity程序
本节将详细地介绍如何在 Unity集成开发环境中创建第一个 Unity案例,将其运行并体验实际效果。此案例的主要内容为:制作一个具有弹性的球体,并使其能够在篮球场上弹跳。读者可参照以下的具体操作步骤进行操作。
(1)首先启动 Unity,如图1-61所示。单击 New project来创建一个新工程,将其重命名为“BallSample”,选择3D选项,即建立的工程是3D的,如图1-62所示。最后单击Creat project按钮,完成创建并进入Unity集成开发环境。
▲图1-61 打开项目窗口
▲图1-62 新建工程窗口
(2)进入Unity集成开发环境后,单击菜单栏中GameObject菜单,执行“3D Object→Cube”命令,创建一个Cube(立方体)。如图1-63所示。
▲图1-63 创建一个Cube(立方体)
(3)在Unity集成开发环境中的Hierarchy视口里双击刚刚创建的Cube对象,在Scene窗口的中心就会出现该Cube对象。如图1-64所示。
▲图1-64 Scene视口中的Cube
(4)在Hierarchy视口里单击刚刚创建的Cube对象,右侧的Inspector视口会立即显示Cube对象的所有属性。调整其位置参数、旋转参数和缩放参数,如图1-65所示。
▲图1-65 修改Cube属性
(5)在Unity集成开发环境中,单击菜单栏中的Assets菜单,选择Import New Asset命令,导入所需要使用的资源文件,如图1-66所示。在这个案例中,所需要导入的资源是纹理图片(见图1-67),选中所需要导入的纹理图片,单击Import按钮完成导入。
▲图1-66 导入资源
▲图1-67 选择所需要的资源
提示
为了方便快速地导入这些比较小的资源文件,可以通过直接将其拖曳进 Unity集成开发环境中来实现。
(6)为所创建的Cube对象添加合适的纹理贴图,就需要创建一个材质对象,执行“Assets→Create→Material”命令,此时资源列表中会生成一个New Material.mat文件,如图1-68所示。将其重命名为“plane.mat”,在其属性栏中单击Albedo前的“⊙”符号会弹出一个Select Texture对话框,如图1-69所示,选择合适的纹理贴图,之后关闭对话框。
▲图1-68 新建Material(材质)
▲图1-69 选择贴图
提示
给对象添加纹理最快捷的方法是直接将合适的纹理图片拖曳到 Sence视口或Hierarchy视口对应的对象上,此时资源列表中会自动生成一个名为“Materials”的文件夹,里面包含了刚刚生成的“plane.mat”文件。
(7)接下来,需要创建一个Sphere(球体)对象,具体步骤为“GameObject→3D Object→Sphere”。为其添加纹理basketball.mat,效果如图1-70所示。之后设置其Transform组件中的参数,如图1-71所示。
▲图1-70 添加球体的效果
▲图1-71 Transform参数
(8)接下来,需要为场景添加一个光源,这里创建的为平行光光源,具体步骤为“GameObject→Light→Directional Light”。光源在Scene视口中的效果如图1-72所示。在右侧属性查看器中调整其位置、姿态、缩放比例、光照颜色、光照强度、阴影类型等参数,如图1-73所示。
▲图1-72 添加光源的效果
▲图1-73 光源参数设置
(9)在Unity集成开发环境中的Hierarchy视口里单击Main Camera(主摄像机),在右侧属性查看器中调整主摄像机的参数,包括位置、姿态、大小、背景颜色、投影方式、视角大小等。如图1-74所示。
▲图1-74 修改Main Camera属性
提示
每一个新创建的场景中,都会自带一个主摄像机以及一个平行光光源,用户可以直接使用。
(10)接下来为Sphere对象添加Rigibody(刚体)组件。首先在Hierarchy视口中选中Sphere,之后单击属性框底部的Add Component按钮,如图1-75所示;选择“Physics→Rigibody”,并调整其属性,如图1-76所示。
▲图1-75 添加组件操作
▲图1-76 刚体组件属性
(11)如果想要球体具有弹性,需要为球体对象添加物理材质,具体步骤为“Assets→Create→Physic Material”,如图1-77所示。为其设置合适的Bounciness参数,如图1-78所示。
▲图1-77 添加物理材质
▲图1-78 物理材质属性
(12)一切准备完成后,即可单击运行按钮,所制作的Unity程序的运行效果就会在Game视口里展现出来。如图1-79所示。
▲图1-79 程序的运行及效果
1.4 本书案例的导入及运行
本节将以随书光盘中上一节制作的案例为例,详细地介绍如何导入并运行已完成的项目。读者可参照以下的操作步骤将随书光盘中的各个项目案例导入到自己计算机上的Unity进行效果预览和其他操作。具体的导入操作步骤如下。
(1)启动Unity,然后在菜单栏中选择执行“File→Open Project…”命令以打开一个项目,如图1-80所示。进入项目向导Recent Project界面,然后单击Open other按钮找到要导入的项目,如图1-81所示。
▲图1-80 打开项目
▲图1-81 Project Wizard界面
(2)找到项目文件夹存放的路径,选择要导入的项目文件夹,这里以书中上一节制作的案例为例。选择BallSample文件夹,然后单击选择文件夹按钮,效果如图1-82所示。
▲图1-82 选择项目文件夹
提示
读者在进行这步之前必须把光盘中对应的案例项目文件夹复制到计算机的某个路径下(路径不能出现中文),这里把BallSample项目文件夹存放在F盘根目录下。
(3)操作到这里Unity会重新启动,进入到Unity后在Project视图中的Assets/Scene文件夹下找scene1.unity文件,然后双击该文件就能在Scene场景中看到图1-83所示的效果了。读者还可以自己运行导入的案例。
▲图1-83 项目预览界面
(4)将项目导入Android手机。在菜单栏中选择执行“File→Build Settings...”命令(见图1-84),进入Build Settings界面,如图1-85所示。然后单击Add Current按钮添加游戏需要的场景,在Platform中选择Android选项。
▲图1-84 打开Build Settings
▲图1-85 Build Settings界面
(5)单击Build And Run按钮,弹出选择apk包存放路径对话框,如图1-86所示。选择一个路径用于存放生成的游戏apk包,在文件名处输入生成apk包的名字,然后单击保存按钮开始将游戏导入手机,此时会弹出导入进度条Building Player,如图1-87所示。
▲图1-86 存放路径选择
▲图1-87 Building Player
(6)进入Building Player界面后会需要一定的时间,请耐心等待。生成过程结束后手机就会自动进入游戏界面并且会在手机上显示一个游戏图标,如图1-88、图1-89所示。在原来选择的路径下出现此游戏的apk包,如图1-90所示。
▲图1-88 项目运行界面
▲图1-89 导入手机的游戏图标
▲图1-90 生成的apk包
(7)如果在Build Settings界面仅仅单击Build按钮,只会生成apk包而不会将游戏自动导入手机,所以使用这种方法生成游戏apk包时不用连接手机。
(8)导出iOS项目。进入Build Settings界面在Platform中选择iOS选项,如图1-91所示。单击Player Setting按钮打开Player Setting界面,设置SDK Version参数为“Simulator SDK”以便导出项目能在iOS虚拟机上运行,如图1-92所示。
▲图1-91 Build Settings界面
▲图1-92 Player Setting界面
(9)单击Build And Run按钮,弹出选择iOS项目存放路径对话框,如图1-93所示。选择一个路径用于存放生成的iOS项目文件夹,在文件名处输入生成项目文件夹的名字,然后单击Save按钮开始生成iOS项目,弹出导入进度条Building Player,如图1-94所示。
▲图1-93 存放路径
▲图1-94 Building Player
(10)进入Building Player界面后会需要一定的时间,请耐心等待。生成过程结束后会自动打开Xcode并将生成的iOS项目导入到Xcode中,这时Xcode会自动打开iOS虚拟机并将刚生成的项目导入到虚拟机中自动运行。项目运行界面如图1-95所示。
▲图1-95 项目在iOS虚拟机中的运行界面
提示
由于iPhone平台是非开放平台,需要许可证才能将项目导入到真机中运行,所以上面只讲了导入虚拟机的过程。如果拥有许可证,则将项目导入到真机的过程和导入虚拟机的过程基本一样。
1.5 本章小结
本章首先介绍了Unity 3D的发展历史以及其别具一格的特点,内容主要包括Unity 3D的简介、Unity 3D的发展和Unity 3D的特点等。相信读者对Unity 3D已经有了初步的了解。对于Unity 3D的发展历史这部分读者只需大致了解,不需深究。
其次,本章通过讲解Unity集成开发环境的安装和将目标平台的SDK集成到Unity的具体步骤,使读者可以顺利地进入Unity集成开发环境。
最后,通过本书案例的导入及运行,可以使读者方便地将光盘中的各个项目案例导入到自己计算机上的Unity进行效果预览和其他操作。