Unity3D几乎是市面上最流行的游戏开发引擎,由Unity Technology(以下简称UT)公司开发,可用于Windows和Mac OS X系统(Linux系统实验版已发布)。最重要的是,它几乎可以导出到任何平台。那么Unity3D游戏开发引擎跨平台怎么实现的呢?
1.关于图形
Unity 支持的图形 API 有 OpenGL、OpenGL ES、WebGL、Metal 和 DirectX,它们分别对应不同的平台。
OpenGL被广泛使用,一些iOS设备、Mac OS X和Linux,甚至Windows都使用OpenGL。
OpenGL ES 兼容手机设置,支持大部分 Android 和部分 iOS 设备。
WebGL 是一个基于浏览器图形运行应用程序和游戏的新平台,无需安装 Flash 或 Unity WebPlayer 等插件。
Metal 是 Apple 的新图形 API,与最新的 iOS 设备和加州计算机兼容。
DirectX 是微软自制的图形 API 解决方案,兼容 Windows、Windows Phone 和 Xbox。
虽然 UT 开发人员在图形处理上也花费了大量时间,但他们大部分时间都花在将这些工具集成到引擎中,而不是自己编写图形 API。
2.关于物理学
在物理方面,它比图形简单得多,Unity 始终坚持使用一种工具:Nvidia 的 PhysX,它支持 Unity 导出到的所有平台。可以这么说,它是市场上最好的物理引擎之一,自从它的第一代产品 Novodex 甚至不是 Nvidia 的产品以来,它就一直受到信任并且表现非常出色。主要原因是一个引擎方便处理所有平台的物理,并且游戏在支持的设备中的碰撞和移动行为是一致的,不会因为设备而导致游戏不平衡。
3.关于照明
Unity 的光照也依赖于外部工具,包括烘焙和实时光照。 Unity5 之前使用 Autodesk 的 Beast 作为烘焙光照的工具。 Unity5.x 使用 Geomeric 的 Enlighten 进行烘焙和实时光照。
4.关于网络
UT于2014年发布了其自制的联网多人解决方案UNET。之前有一些常用的网络解决方案,最著名的是Photon。而UNET由两部分组成:网络API(高级和低级API)和付费多人服务。由于这是一个内部项目,UT 必须将代码移植到所有支持的平台上,就像上面的图形、物理和照明一样,每个平台都是不同的。
5.关于脚本
脚本可能是每个人最关心的部分,因为使用引擎的目的是不必担心图形或底层物理。 Unity 支持 C# 和 Unity 脚本,无需任何转换工具即可将游戏导出到上述任何平台。
查看 Xamarin 说明:
用 C# 编写应用程序并直接从 C# 调用任何本机平台的 API。 Xamarin 编译器捆绑 .NET 运行时并输出本机 ARM 可执行文件,打包为 iOS 或 Android 应用程序。
那么Mono开发的应用是绑定到整个框架的吗?当然不是,框架中没有用到的类在链接时就被淘汰掉了。只有使用过的部件才会被打包到最终的应用程序中。至此,Unity的跨平台原理基本讲完了,Mono是主要贡献者。顺便说一句,Unity 最初推出 IL2CPP 是为了取代 Mono 作为脚本后端,但由于它的 bug 太多以及导出的 C++ 文件很大,一直受到开发人员的批评。相信IL2CPP短时间内要完全取代Mono并不容易。
希望以上内容对您学习Unity3D开发有所帮助!千锋教育拥有完整的移动Unity3D开发课程体系,欢迎大家来免费试听。更多关于unity培训的问题,欢迎咨询千锋教育在线名师,如果想要了解我们的师资、课程、项目实操的话可以点击咨询课程顾问,获取试听资格来试听我们的课程,在线零距离接触千锋教育大咖名师,让你轻松从入门到精通。