Unity 这个 3D 引擎很厉害吗?的确可以完成各种终端的简单的3d游戏引擎研发吗

为何首选U3D简单的3d游戏引擎编程开發工程师

Unity3D是Unity Technologies公司开发的一款强大的跨平台简单的3d游戏引擎开发引擎,能让简单的3d游戏引擎开发者轻松创建诸如3D视频简单的3d游戏引擎、实時3D动画等互动内容最新Unity4.0引擎已经能够支持包括iOS、安卓、Windows Phone、PS3等在内的十余个平台发布,广泛应用于网页简单的3d游戏引擎及手机简单的3d游戏引擎开发领域Unity——3D手游的传奇,孕育了成千上万款高质、超酷炫的神作:《炉石传说》 《神庙逃亡2》《天天跑酷》简单的3d游戏引擎的3D時代已经来临,现在有数百万开发者加入Unity大军你还在等什么?

}

现在让我们聊聊一个乍听不重要但在理解Unity工作原理中很重要我的东西。我们都知道Unity3D是一个引擎然而它到底是如何工作的,你知晓吗?在本帖中我们将会学习到:

Unity3D引擎是洳何被实现的

如何使用在Unity内部使用自己的Mono类库

Unity3D引擎是如何被实现的/我们如何访问引擎代码

我们一直被告知托管编程语言是相对于原生代碼很慢,即便一些托管语言正在达到了很好的性能我们都知道Java 和C#适合用于网页、非关键系统和移动应用的开发。

但是当谈到高性能(真实感图形这块总能遇到坑)这些就不怎么管用了。尽管unity简单的3d游戏引擎世界只是通过2D和简单图形来实现的但是它却能够给人呈现一个很好嘚很真实的世界或者场景。

那么我们自问一下(至少我做了):Unity是如何呈现这样一个效果逼真的图像是否所有的代码都是用C#,JS或者Boo来写的,并茬编辑器(Mono)上运行的?如果这些都是托管语言那么它又是如何来实现的?这难道是传说中的黑科技吗?然而并不是。

让我们再搜索一下(锻炼手商)在用Google查过之后,我们得到了答案Unity引擎本身的核心代码使用C\C++写的,我们所知道原生语言几乎所有的图像,声音物理引擎代码都是使鼡C++(由于我也没有接触过源代码,所以说也不太确切)

但是Unity开发者在一篇关于C\C++ code coverage文章给了我们提示。那么至今这事儿变得有意思了:Unity是用C\C++写嘚,这也是为什么它会这么快流畅,并且给我们呈现了那么棒的效果

再次的,答案全都指向了一个“英雄”(译者注:作者真能扯):封裝器!诶?你没听说过封装器?那...让我们谈谈它

当你用C\C++编程的时候,按照惯例你会创建库,那里包含了你所使用的一系列方法和类当你这麼做的时候,你会选择一些类或方法进行隐藏另一些则会“暴露”(可访问的)。“暴露”的那些能够从库外部访问但是隐藏的则不会,呮能供库内部的方法/类使用你应该知道著名的代码暴露理论(恕在下浅薄没有听过,就是说共有方法造成的一些麻烦)一旦你完成了这些,在你的库中就会有一个Dll文件你可以把它当做一个普通的系统库来使用。

如果你从没有使用过封装器你可能会用你写库时的语言来使鼡它。那么这就是封装器的奇妙所在对于封装器的使用,其中之一就是给我们一个层提供跨语言的互操作性。那就意味着你能够从C#Python,Perl程序中调用C\C++代码

如果你从未听说过的包装和跨语言的使用,这可能使你一头雾水的但你可以这样想它:它无非就是来回调动数据。洳果你懂得如何跨语言操作数据他们便能够很好的契合在一起。

我第一次使用封装也是在一个简单的3d游戏引擎开发的课堂上老师给我咘置的任务就是编译C类库到一个Dll文件中,并用C#代码封装它然后将其导入Unity。网上有很多教程教我们如何做我感觉这个还是比较简单的。洳何还是很迷惑那就试试,它是一个很简单的练习但却能教你unity如何工作的。反正听起来确实封装一个大的库很痛苦(事实的确是)不过還是有工具能够帮助你完成这样一个具有挑战性的工作。我们使用的其中一个就是SWIG它用起来挺好的,简直了!

如何使用在unity内部使用自己的Mono類库

我们刚刚做了什么?我们创建了C语言代码它能够被C#代码访问。你应该明白刚刚我们做什么了吧!我们把这个C语言代码叫做“Unity Engine”让我们假设它有成千上百个方法用于去解决图像,声音物理引擎和粒子效果现在我们再从中创建一个库,然后用C#创建一个封装器使我们能够訪问它。这样任何包含我们库的C#项目都能够访问它的内容。

这就是Unity引擎!核心代码使用C\C++写的用C#写代码具有和原生代码一样高性能的优点。在安装文件中Unity引擎自己就是一个Dll文件把它找出来吧!而且,你还能够添加自己的Mono库到你自己的Unity项目中Unity开发者会教你如何玩转它!

让我们說说另外一件事:Unity引擎和Unity编辑器的区别。Unity引擎是一个庞大的库能够给我们提供很多工具来运行简单的3d游戏引擎。而我们使用的Unity编辑器(就昰灰色界面的那个带有检测窗口(inspector),分层窗口(hierarchy))则是另一码事:它是一个帮助我们开发简单的3d游戏引擎的用户界面但是没有必要去运行他們。它有一个非常友好的用户界面帮助我们使用Unity引擎编辑器能够运行Unity引擎的代码,当然也能够运行自己的代码它大多是用C#构建的,也能够扩展:你可以创建自己的窗口检测窗口,甚至是你自己的浏览器这个世界太疯狂了!扩展编辑器IMO只是unity强大特色的其中之一。

Unity引擎是C、C++库的集合它能够帮助我们运行简单的3d游戏引擎,而且还能够通过封装器来访问它典型的就是使用C#。它以一种灵活的方式以优越的性能来构建简单的3d游戏引擎,并且使用C#开发更加快捷简单最后,Unity编辑器是一个友好的用户界面它能够帮助我们使用unity引擎构建简单的3d游戲引擎。

值得注意的是Unity引擎本身能够(本地 部分)运行在大量 设备,这是因为它能够被编译到所有这些设备:检查Unity的安装文件夹你可以发現每一个平台的引擎导出呈DLL文件。 所以带着这个想法我们在Unity简单的3d游戏引擎上完成了执行的循环: Unity引擎的核心是用C、C++,它能够跨平台运荇

我们可以通过C#封装代码在Mono上运行, 进行交互最后,根据其性质Mono项目(让C #跨平台)给我们提供了环境以保证能在我们的设备上运行的C #应鼡。

Unity3D引擎作品在很大程度上以惊人的 性能易于编程,可跨平台等特点占据着市场这就是我们讨论得出的结论。

}

我要回帖

更多关于 简单的3d游戏引擎 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信