1.1 初识Unity游戏开发引擎

Unity 3D是由Unity Technologies开发的一个让你轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。具体包含整合的编辑器、跨平台发布、地形编辑、着色器、脚本、网络、物理、版本控制等特性。

1.1.1 Unity简介

Unity 3D是由丹麦Unity公司开发的游戏开发工具。作为一款跨平台的游戏开发工具,从一开始就被设计成易于使用的产品,支持包括IOS、Android、PC、Web、PS3、Xbox等多个平台的发布。同时作为一个完全集成的专业级应用,Unity还包含了价值数百万美元的功能强大的游戏引擎。

Unity 3D类似于Director、Blender game engine、Virtools或Torque Game Builder等利用交互的图形化开发环境为首要方式的软件,其编辑器运行在Windows和Mac OS X下,可发布游戏至Windows、Mac、Wii、iPhone、Android等平台。

1.1.2 Unity的诞生与发展

通过前面的简单介绍,应该已经对Unity游戏开发引擎有了初步的认知。Unity游戏开发引擎现在已经在移动游戏开发领域中扮演着不可或缺的角色,能在从诞生到现在不到10年的时间取得如此成绩,Unity可谓生逢其时。下面将简要介绍Unity游戏开发引擎的发展历程。

•2005年6月,Unity1.0发布。Unity1.0是一个轻量级、可扩展的依赖注入容器,有助于创建松散耦合的系统。它支持构建注入(Constructor Injection)、属性/设值方法注入(Property/Setter Injection)和方法调用注入(Method Call Injection)。

•2009年3月,Unity2.5加入了对Windows的支持。Unity发展到2.5完全支持Windows Vista与Windows XP的全部功能和互操作性,而且Mac OS X中的Unity编辑器也已经重建,在外观和功能上都相互统一。Unity2.5的优点就是Unity可以在任一平台建立任何游戏,实现了真正的跨平台。

•2009年10月,Unity2.6独立版开始免费。Unity2.6支持了许多的外部版本控制系统,例如Subversion、Perforce、Bazaar,或是其他的VCS系统等。除此之外,Unity2.6与VisualStudio完整的一体化也增加了Unity自动同步Visual Studio项目的源代码,实现所有脚本的解决方案和智能配置。

•2010年9月,Unity3.0支持多平台。新增加的功能有方便编辑桌面左侧的快速启动栏、增加支持Ubuntu 12.04、更改桌面主题和在dash中隐藏“可下载的软件”类别等。

•2012年2月,Unity Technologies发布3.5。纵观其发展历程,Unity Technologies公司一直在快速强化Unity,Unity3.5版提供了大量的新增功能和改进功能。所有使用Unity3.0或更高版本的用户均可免费升级到Unity3.5。

•2012年11月,Unity Technologies公司正式推出Unity4.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上正式发布了Unity5.0,Unity首帨执行官John Riccitiello表示,Unity5是Unity的重要里程碑。Unity5.0实现了实时全局光照,加入了对WebGL的支持,实现了完全的多线程。

经过短短几年的发展,Unity的全球注册量超过1000万,并且现今市面上的3D手机游戏超过半数是通过Unity游戏开发引擎制作完成的,随着VR、AR技术的日益成熟,Unity游戏开发引擎也率先开始支持虚拟现实和增强现实的开发,人才缺口十分巨大,由此可见Unity游戏开发引擎的火热程度。

1.1.3 Unity的特色

Unity游戏开发引擎之所以能够在现在炙手可热,与其完善的技术以及丰富的个性化功能密不可分。Unity游戏开发引擎在使用上易于上手,降低了对游戏开发人员的要求。下面将对Unity游戏开发引擎的特色进行阐述。

□ 综合编辑

Unity简单的用户界面是层级式的综合开发环境,具备视觉化编辑、详细的属性编辑器和动态的游戏预览特性。由于其强大的综合编辑特性,因此,Unity也被用来快速地制作游戏或者开发游戏原型,大大地缩短了游戏开发的周期。

□ 图形引擎

Unity的图形引擎使用的是Direct3D(Windows)、OpenGL(Mac、Windows)和自有的APIs(Wii);可以支持Bump mapping、Reflection mapping、Parallax mapping、Screen Space Ambient Occlusion、动态阴影所使用的Shadow Map技术与Render-to-texture和全屏Post Processing效果。

□ 着色器

shaders编写使用ShaderLab语言,能够完成三维计算机图形学中的相关计算,同时支持自有工作流中的编程方式或Cg.GLSL语言编写的shader。Shader对游戏画面的控制力就好比在Photoshop中编辑数码照片,在高手手里可以营造出各种惊人的画面效果。

□ 地形编辑器

Unity内建强大的地形编辑器,支持地形创建和树木与植被贴片,支持自动的地形LOD,而且还支持水面特效,尤其是低端硬件亦可流畅运行广阔茂盛的植被景观,能够使新手快速、方便地创建出游戏场景中所需要使用到的各种地形。地形效果如图1-1所示。

图1-1 地形效果

□ 物理特效

物理引擎是一个计算机程序模拟牛顿力学模型,使用质量、速度、摩擦力和空气阻力等变量。其可以用来预测各种不同情冴下的效果。Unity内置NVIDIA强大的PhysX物理引擎,可以方便、准确地开发出所需要的物理特效。

PhysX可以由CPU计算,但其程序本身在设计上还可以调用独立的浮点处理器(如GPU和PPU)来计算,也正因为如此,它可以轻松完成像流体力学模拟那样大计算量的物理模拟计算。并且PhysX物理引擎还可以在包括Windows、Linux、Xbox360、Mac、Android等在内的全平台上运行。

□ 音频和视频

音效系统基于OpenAL程式库,OpenAL主要的功能是在来源物体、音效缓冲和收听者中编码。来源物体包含一个指向缓冲区的指标,声音的速度、位置和方向,以及声音强度。收听者物体包含收听者的速度、位置和方向,以及全部声音的整体增益。缓冲里包含8位或16位、单声道或立体声PCM格式的音效资料,表现引擎进行所有必要的计算,如距离衰减、多普勒效应等。

□ 集成2D游戏开发工具

当今的游戏市场中2D游戏仌然占据着很大的市场仹额,尤其是对于移动设备比如手机、平板电脑等,2D游戏仌然是一种主要的开发方式。针对这种情冴Unity在4.3版本以后正式加入了Unity2D游戏开发工具集,并将在Unity5.3版本之后加强对2D开发的支持,增添许多新的功能。

使用Unity2D游戏开发工具集可以非常方便地开发2D游戏,利用工具集中的2D游戏换帧动画图片的制作工具可以快速地制作2D游戏换帧动画。Unity为2D游戏开发集成了Box2D物理引擎并提供了一系列2D物理组件,通过这些组件可以非常简单地在2D游戏中实现物理特性。