本节书摘来自异步社区《Unity 3D 游戏开发技术详解与典型案例》一书中的第1章,第1.1节Unity 3D基础知识概览,作者 吴亚峰 , 于复兴,更多章节内容可以访问云栖社区“异步社区”公众号查看
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类似于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月,Unity1.0发布。Unity1.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。
1.1.3 Unity 3D广阔的市场前景
近几年来,Android平台游戏、iPhone平台游戏以及Web的网页游戏发展迅猛,已然成为带动游戏发展的新生力量。遗憾的是目前除了少数的作品成功外,大部分的游戏都属宣传攻势大于内容品质的平庸之作。面对这种局面,3D游戏成为独辟蹊径的一种选择,而为3D游戏研发提供强大技术支持的Unity 3D引擎,以其创造高质量的3D游戏和真实视觉效果的核心技术,为开发3D游戏提供了强大的源动力。
Unity 3D游戏引擎技术研讨会最早于2011年5月在韩国举行。据悉,现在10种以上的新引擎开发,都是采用了Unity 3D游戏引擎技术。现已有部分开发商利用China Joy展会的契机,展示了该引擎的运行效果,目前已有不少厂商与开发商签订了提前预定引擎的协议。
提示
Unity引擎可以帮助开发人员制作出炫丽的3D效果,并实时生成查看,目前已推出了对应iPhone、iPad、PC、MAC、Android、Wii、PS3、XB360等平台的版本,促进了游戏跨平台的应用。读者要做的,只是在编辑器中选择使用哪一个平台来预览游戏作品。
未来几年内必定是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所示。
图形引擎
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所示。
着色器(shaders)
shaders编写使用ShaderLab语言,同时支持自有工作流中的编程方式或Cg.GLSL语言编写的shader。一个shader可以包含众多变量及一个参数接口,允许Unity去判定参数是否为当前所支持并适配最适合参数,并选择相应的shader类型以获得广大的兼容性。因此,Unity的着色器系统具有易用、灵活和高性能的特性。
地形编辑器
Unity内建强大的地形编辑器,支持地形创建和树木与植被贴片,而且还支持水面特效,尤其是低端硬件亦可流畅运行广阔茂盛的植被景观,如图1-3和图1-4所示。
联网
现在大部分的游戏都是联网的,令人惊喜的是,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 格式的音效资料,表现引擎进行所有必要的计算,如距离衰减、多普勒效应等。
不同于OpenGL规格,OpenAL规格包含两个API分支,分别为以实际OpenAL函式组成的核心和ALC API,其中ALC用于管理表现内容、资源使用情况,并将跨平台风格封在其中。OpenAL还有“ALUT”程式库,提供高阶“易用”的函式,其定位相当于OpenGL的GLUT。
脚本
游戏脚本为基于Mono的Mono脚本,是一个基于.NET Framework的开源语言,因此,程序员可用JavaScript 、C#或Boo加以编写,如图1-5所示。
提示
由于JavaScript是开放式语言,考虑到脚本语言的通用性,本书采用JavaScript编写脚本。
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网页游戏,这些游戏都得到了很高评价。接下来将分别为读者介绍这3种游戏。
基于Android平台的游戏
Unity可以基于Android平台进行游戏开发,由于其自身存在的优势,因此开发的游戏也让人赏心悦目,赞不绝口。例如,由Hidden Variable Studios开发的Bag It!,如图1-6所示;由Mika Mobile,Inc开发的Battleheart,如图1-7所示;由Infinite Dreams开发的Jelly Defense,如图1-8所示;由MADFINGER Games开发的Samurai II: Vengeance,如图1-9所示。
基于iPhone平台的游戏
Unity依然可以基于iPhone平台进行游戏开发,由于其自身存在的优势,可以制作出绚丽多彩的iPhone平台游戏,例如,由Punchers Impact开发的Crasher,如图1-10所示;Warner Bros & Sticky Studios开发的Sucker Punch,如图1-11所示;由Deemedya开发的Trial Xtreme 2,如图1-12所示;由Bigpoint开发的Battlestar Galactica Online,如图1-13所示。
基于Web的大型3D网页游戏
同样Unity也可以开发基于Web的大型3D网页游戏,市面上已经推出了很多这样的3D网页游戏,例如《胸怀三国志》是曾开发《巨商》和《欢乐君主》等战略网络游戏的Ndoors公司金泰坤常务的最新力作,如图1-14所示;《骑士的远征》是旭游网络继《兄弟篮球》之后的又一款力作,如图1-15示;《木乃伊OL》(The Mummy Online)是由德国知名网页游戏开发商Bigpiont开发的一款全新网页游戏,如图1-16示;《图腾王》是由上海Tip Cat开发的3D休闲对战网页游戏,如图1-17所示。