1.1 Unity 3D基础知识概览
本节主要向读者介绍Unity 3D的相关知识,主要内容包括Unity 3D的简介、Unity 3D的发展和Unity 3D的特点等。通过本节的学习,读者将对Unity 3D有一个基本的认识。
1.1.1 初识Unity 3D
Unity 3D是由Unity Technologies开发的一个轻松创建三维视频游戏、建筑可视化、实时三维动画等互动内容的、多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。
Unity类似于Director、Blender Game Engine、Virtools或Torque Game Builder等利用交互的图形化开发环境为首要方式的软件。
其编辑器运行在Windows和Mac OS X下,可发布游戏至Windows、Mac、Wii、iPhone和Android平台,也可以利用Unity Web Player插件发布网页游戏,支持Mac和Windows的网页浏览,并且Unity的网页播放器也被Mac Widgets所支持。
1.1.2 Unity的诞生及发展
通过前面小节的学习,相信读者对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版本,新加入对DriectX 11的支持和全新的Mecanim动画工具,支持移动平台的动态阴影,减少移动平台Mesh内存消耗,支持动态字体渲染,以及为用户提供Linux及Adobe Flash Player的部署预览功能。
1.1.3 Unity 3D广阔的市场前景
近几年来,Android平台游戏、iPhone平台游戏以及Web的网页游戏发展迅猛,已然成为带动游戏发展的新生力量。遗憾的是目前除了少数的作品成功外,大部分的游戏都属宣传攻势大于内容品质的平庸之作。
面对这种局面,3D 游戏成为独辟蹊径的一种选择,而为 3D 游戏研发提供强大技术支持的Unity 3D引擎,以其创造高质量的3D游戏和真实视觉效果的核心技术,为开发3D游戏提供了强大的源动力。
提示
Unity 3D游戏引擎后来居上,在2012年发行的几款风靡一时的 iPhone和Android平台上的游戏都选择了这款游戏引擎,如《神庙逃亡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 3D的特点,帮助读者进一步学习Unity 3D。
1.Unity 3D本身所具有的特点
● 综合编辑
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、Firefox、Safari、Mozilla、Netscape、Opera和 Camino、Mac OS X的Dashboard工具,但是Wii程序和iPhone应用程序的开发需要用户购买额外的授权,在价格上有所不同,如图1-2所示。
▲图1-2 一键部署
● 着色器(shaders)
shaders编写使用ShaderLab语言,同时支持自有工作流中的编程方式或Cg.GLSL语言编写的shader。
一个shader可以包含众多变量及一个参数接口,允许Unity去判定参数是否为当前所支持并适配最适合参数,并选择相应的 shader 类型以获得广大的兼容性。因此,Unity 的着色器系统具有易用、灵活和高性能的特性。
● 地形编辑器
Unity 内建强大的地形编辑器,支持地形创建和树木与植被贴片,而且还支持水面特效,尤其是低端硬件亦可流畅运行广阔茂盛的植被景观,如图1-3和图1-4所示。
▲图1-3 地形 1
▲图1-4 地形 2
● 联网
现在大部分的游戏都是联网的,令人惊喜的是,Unity 内置了强大多人联网游戏引擎,具有Unity 自带的客户端和服务器端,省去了并发、多任务等一系列繁琐而困难的操作,可以简单地完成所需的任务。其多人网络连线采用Raknet,可以从单人游戏到全实时多人游戏。
● 物理特效
物理引擎是一个计算机程序模拟牛顿力学模型,使用质量、速度、摩擦力和空气阻力等变量。其可以用来预测各种不同情况下的效果。Unity内置NVIDIA强大的PhysX物理引擎,可以方便、准确地开发出所需要的物理特效。
PhysX可以由CPU计算,但其程序本身在设计上还可以调用独立的浮点处理器(如GPU和PPU)来计算,也正因为如此,它可以轻松完成像流体力学模拟那样的大计算量的物理模拟计算。并且PhysX物理引擎还可以在包括Windows、Linux、Xbox360、Playstation3、Mac、Android 等在内的全平台上运行。
● 音频和视频
音效系统基于OpenAL程式库,可以播放Ogg Vorbis的压缩音效,视频播放采用Theora编码,并支持实时三维图形混合音频流和视频流。
OpenAL 主要的功能是在来源物体、音效缓冲和收听者中编码。来源物体包含一个指向缓冲区的指标、声音的速度、位置和方向,以及声音强度。收听者物体包含收听者的速度、位置和方向,以及全部声音的整体增益。缓冲里包含 8或 16位元、单声道或立体声 PCM格式的音效资料,表现引擎进行所有必要的计算,如距离衰减、多普勒效应等。
● 脚本
游戏脚本为基于Mono的Mono脚本,是一款基于.NET Framework的开源语言,因此,程序员可用JavaScript 、C#或Boo加以编写,如图1-5所示。
提示
由于JavaScript和C#脚本语言是目前Unity开发中比较流行的语言,同时,考虑到脚本语言的通用性,因此,本书采用JavaScript和C#两种脚本语言交叉编写脚本,给读者带来更多的选择。
● Unity资源服务器
Unity资源服务器具有一个支持各种游戏和脚本版本的控制方案,使用PostgreSql作为后端。其可以保证在开发过程中多人并行开发,保证不同的开发人员在使用不同版本的开发工具所编写的脚本能够顺利的集成。
▲图1-5 脚本
● 真实的光影效果
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网页游戏,这些游戏都得到了很高评价。接下来将分别为读者介绍这3类游戏。
● 基于Android平台的游戏
Unity可以基于Android平台进行游戏开发,由于其自身存在的优势,因此开发的游戏也让人赏心悦目,赞不绝口。
例如,《捣蛋猪》是Rovio Entertainment继《愤怒的小鸟》之后的又一款力作,如图 1-6所示;由Madfinger Games开发的《暗影之枪》,如图1-7所示;由 Infinite Dreams开发的 Jelly Defense,如图 1-8所示;由MADFINGER Games开发的Samurai II: Vengeance,如图 1-9所示。
▲图1-6 《捣蛋猪》
▲图1-7 暗影之枪
● 基于iPhone平台的游戏
Unity依然可以基于iPhone平台进行游戏开发,由于其自身存在的优势,可以制作出绚丽多彩的iPhone平台游戏。
▲图1-8 JellyDefense
▲图1-9 SamuraiⅡ:Vengeance
例如,由 Imangi Studios开发的跑酷类视频游戏《神庙逃亡 2》,如图 1-10所示;由Defiant Development Pty.Ltd开发的Ski Safari,如图1-11所示;由NaturalMotion Games Limited开发的CSR Racing,如图1-12所示;由Crescent Moon Games LLC开发的Slingshot Racing,如图1-13所示。
▲图1-10 神庙逃亡 2
▲图1-11 Ski Safari
▲图1-12 CSR Racing
▲图1-13 Slingshot Racing
● 基于Web的大型3D网页游戏
同样Unity也可以开发基于Web的大型3D网页游戏,网页类游戏不用下载客户端,也是近几年比较流行的一种游戏类型,市面上已经推出了很多这样的3D网页游戏。
例如《胸怀三国志》是Ndoors公司的最新力作,如图 1-14所示;由Roadhouse Interactive开发的MechWarrior Tactics,如图1-15所示;《木乃伊OL》是由开发商Bigpiont开发的一款全新网页游戏,如图1-16示;《蒸汽之城》是厦门梦加网络科技有限公司开发的一款3D网页MMORPG,如图1-17所示。
▲图1-14 《胸怀三国志》
▲图1-15 MechWarrior Tactics
Unity 3D基础知识到这里介绍完毕,接下来将详细介绍Unity中开发环境的搭建,这是进行Unity 3D开发的第一步。
▲图1-16《木乃伊OL》
▲图1-17 《蒸汽之城》