第1章 Unity 3D基础以及开发环境的搭建
本章主要向读者介绍Unity 3D的基础知识以及Unity集成开发环境的安装,读者会对Unity 3D有一个大致的了解。通过本书案例的导入及运行,读者可以方便地将光盘中的各个项目案例导入到自己电脑上的Unity进行效果预览和其他操作。
1.1 Unity 3D基础知识概览
本节主要向读者介绍Unity 3D的发展历史以及其独具特色的特点,主要内容包括Unity 3D的简介、Unity 3D广阔的市场前景、Unity 3D的发展和Unity 3D的特点等。通过本节的学习,读者将对Unity 3D有一个基本的认识。
1.1.1 初识Unity 3D
Unity 3D是由Unity Technologies开发的一个轻松创建三维视频游戏、建筑可视化、实时三维动画等互动内容的、多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。通过Unity简单的用户界面,玩家可以完成任何工作。
Unity类似于Director、Blender Game Engine、Virtools和Torque Game Builder等以交互的图形化开发环境为首要方式的3D游戏引擎软件。内置的NVIDIAPhysX物理引擎带给玩家生活的互动。实时三维图形混合音频流、视频流。
其编辑器运行在Windows和Mac OS X下,可发布游戏至Windows、Mac、Wii、iPhone和Android平台,也可以利用Unity Web Player插件发布网页游戏,支持Mac和Windows的网页浏览,并且Unity的网页播放器也被Mac Widgets所支持。
1.1.2 Unity的诞生及发展
通过前面小节的学习,相信读者对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 3D可以在任一平台建立任何游戏,实现了真正的跨平台。
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 Technologies公司一直在快速强化Unity,Unity 3.5版本提供了大量的新增功能和改进功能。所有使用Unity 3.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开发者兴奋不已,这也正是开发者长久以来所期待的。
1.1.3 Unity 3D广阔的市场前景
近几年来,Android平台游戏、iPhone平台游戏以及Web网页游戏发展迅猛,已然成为带动游戏发展的新生力量。遗憾的是目前除了少数的作品成功外,大部分的游戏都属宣传攻势大于内容品质的平庸之作。
面对这种局面,3D游戏成为独辟蹊径的一种选择,而为3D游戏研发提供强大技术支持的Unity 3D引擎,对DirectX和OpenGL拥有高度优化的图形渲染管道,以其创造高质量的3D游戏和真实视觉效果的核心技术,为开发3D游戏提供了强大的源动力。
提示
Unity 3D游戏引擎后来居上,在2012年发行的几款风靡一时的iPhone和Android平台上的游戏都选择了这款游戏引擎,如《神庙逃亡2》、《王者之剑》、《武士2:复仇》等。
Unity 3D不仅在游戏领域里有广阔的应用,其还可以用于3D虚拟仿真、大型产品3D展示、3D虚拟展会、3D场景导航以及一些精密仪器使用方法的演示等,可谓领域非常广泛。
Unity 3D游戏引擎技术研讨会最早于2011年5月在韩国举行。据悉,现在10种以上的新引擎开发都采用了Unity 3D游戏引擎技术。现已有部分开发商利用China Joy展会的契机,展示了该引擎的运行效果,目前已有不少厂商与开发商签订了提前预定引擎的协议。
提示
Unity引擎可以帮助开发人员制作出炫丽的3D效果,并实时生成查看,目前已推出了对应iPhone、iPad、PC、Mac、Android、Flash Player、Wii、PS3、Xbox360等平台的版本,促进了游戏跨平台的应用。读者要做的,只是在编辑器中选择使用哪一个平台来预览游戏作品。
未来几年必定是Unity 3D“大行其道”的时代,其开发群体的迅速扩大、Web Player装机率的快速上升使Unity 3D迅速爆发的时机已经到来。在此引用业内知名人士的一句话:“不要再对所谓的Flash 3D抱有什么希望,也不要再去花心思学习那些杂七杂八的Flash 3D插件,赶紧学习Unity 3D才是正经。”
1.1.4 独具特色的Unity 3D
通过前面两个小节的学习,相信读者对Unity 3D有了一个基本的认识。Unity在游戏开发领域用其独特、强大的技术理念征服了全球众多的业界公司以及游戏开发者。本小节将为读者介绍Unity 3D的特点,帮助读者进一步学习Unity 3D。
1.Unity 3D本身所具有的特点
综合编辑
Unity简单的用户界面是层级式的综合开发环境,具备视觉化编辑、详细的属性编辑器和动态的游戏预览特性。由于其强大的综合编辑特性,因此,Unity也被用来快速地制作游戏或者开发游戏原型,如图1-1所示。
▲图1-1 综合编辑
图形引擎
Unity的图形引擎使用的是Direct 3D(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)
Shader编写使用ShaderLab语言,同时支持自有工作流中的编程方式或Cg.GLSL语言编写的Shader。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#或Boo加以编写,如图1-6所示。
▲图1-6 脚本
提示
由于JavaScript和C#脚本语言是目前Unity开发中比较流行的语言,同时,考虑到脚本语言的通用性,因此,本书采用JavaScript和C#两种脚本语言编写脚本,给读者带来更多的选择。
Unity资源服务器
Unity资源服务器具有一个支持各种游戏和脚本版本的控制方案,使用PostgreSql作为后端。其可以保证在开发过程中多人并行开发,保证不同的开发人员使用不同版本的开发工具所编写的脚本能够顺利地集成。
真实的光影效果
Unity提供了具有柔和阴影与lightmaps的高度完善的光影渲染系统。光照图(lightmap)是包含了视频游戏中面的光照信息的一种三维引擎的光强数据。光照图是预先计算好的,而且要用在静态目标上。
说明
静态目标(static objects)在三维引擎里是区别于动态目标(dynamic object)的一种分类。
2.Unity 3D的跨平台特性
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网页游戏,这些游戏都得到了很高评价。接下来将分别为读者介绍这三类游戏。
基于Android平台的游戏
Unity可以基于Android平台进行游戏开发,由于其自身存在优势,因此开发的游戏也让人赏心悦目,赞不绝口。
例如,《捣蛋猪》是Rovio Entertainment继《愤怒的小鸟》之后的又一款力作,如图1-7所示;由天美艺游工作室开发的《天天飞车》,如图1-8所示;由GluMobile开发的《血之荣耀》,如图1-9所示;是由蓝港在线开发的《王者之剑》,如图1-10所示。
▲图1-7 《捣蛋猪》
▲图1-8 《天天飞车》
▲图1-9 《血之荣耀》
▲图1-10 《王者之剑》
基于iPhone平台的游戏
Unity依然可以基于iPhone平台进行游戏开发,由于其自身存在的优势,可以制作出绚丽多彩的iPhone平台游戏。
例如,由Imangi Studios开发的跑酷类视频游戏《神庙逃亡2》,如图1-11所示;是由Defiant Development Pty.Ltd开发的《滑雪大冒险》,如图1-12所示;是由YANSHU SUN开发的《崩坏学园》,如图1-13所示;是由Crescent Moon Games LLC开发的Slingshot Racing,如图1-14所示。
▲图1-11 《神庙逃亡2》
▲图1-12 《滑雪大冒险》
基于Web的大型3D网页游戏
同样Unity也可以开发基于Web的大型3D网页游戏,网页类游戏不用下载客户端,也是近几年比较流行的一种游戏类型,市面上已经推出了很多这样的3D网页游戏。
▲图1-13 《崩坏学园》
▲图1-14 Slingshot Racing
例如,《新仙剑奇侠传online》是骏梦游戏的最新力作,如图1-15所示;是由上海友齐开发的《坦克英雄》,如图1-16所示;《绝代双骄》是开发商昆仑在线开发的一款全新网页游戏,如图1-17所示;《蒸汽之城》是由厦门梦加网络科技有限公司开发的一款3D网页MMORPG,如图1-18所示。
▲图1-15 《新仙剑奇侠传online》
▲图1-16 《坦克英雄》
▲图1-17 《绝代双骄》
▲图1-18 《蒸汽之城》