Unity是如何java为什么是跨平台的的

 上传我的文档
 下载
 收藏
粉丝量:35
有任何问题请发站内信息!本店资源来源于互联网,版权为原作者所有 ,请下载试用者二十四小时后删除,试用后请购买正版的资源。若侵犯到您的版权, 请提出指正, 我们将立即删除。
 下载此文档
开题报告-基于unity3d引擎的跨平台游戏开发
下载积分:800
内容提示:开题报告-基于unity3d引擎的跨平台游戏开发
文档格式:DOCX|
浏览次数:10|
上传日期: 09:38:59|
文档星级:
全文阅读已结束,如果下载本文需要使用
 800 积分
下载此文档
该用户还上传了这些文档
开题报告-基于unity3d引擎的跨平台游戏开发
关注微信公众号Unity是如何输出到多平台的? - 开发技术交流 - 源码分享网
232 次浏览 |
是如何输出到多平台的?
我的第一篇文章,选择了一个不那么简单的主题,但是是我近期比较感兴趣的。这周,我和一个朋友,谈到了游戏开发和Unity3D,他问我,“为什么Unity可以输出到那么多的平台上?”我想了一下,试图组织语言,但是我尽然不能回答这个问题。我从来没有认真想过这个问题,所以,我开始做一些研究。
哪些人适合看这篇文章:如果你是一个开发者,对于 托管、本地代码,执行环境和不同平台这些概念有一定的了解,这篇文章是为你准备的。如果你是3D、2D美术,或者对于这类工作比较好奇的人,我非常抱歉,你可以停下来了,并接受一个可怕的答案:它就是这样神奇。你可以跳到本文的最后两段,结论在那里。如果你还是很好奇,你可以试一试继续读下去。
我们开始讨论这篇文章的话题:Unity3D可以说是市面上最流行的游戏开发引擎了。它非常友好(相信我,学习一些教程之后,15岁的孩子也能使用它)。它现在有Window和MacOs X版(Linux现在还在实验阶段),本文最重要的一点:它可以输出在几乎所有的设备上。我不是在开玩笑,看一下官网上的列表:
Windows Phone
BlackBerry
Windows Store Apps
Their native Web Player
Oculus Rift
它适合无数的设备和环境。如果你还不知道Unity3D,可以试一下。免费的版本可输出Mac OX, Linux, Window, iOS, Android, BlackBerry, Web Player,SamsungTV, WebGL, Tizen,WindowPhone。相当不错,试一下。(遗憾,我并没有收收到Unity官方的广告费,仅仅只是我觉得它真是太赞了。)
更新:Jashan在评论里指出,这篇文章,我只把重点放在了脚本上,所以,我决定多写一点关于Unity3D如何输出其他特性到如此多的平台上。阅读下面一段,你会注意到,尽管使用Unity技术是一个伟大的工作,它依然依赖于许多公司帮助它将一些特性引入Unity。在新平台中发布时,Unity的开发人员会一个一个地检查量否支持每个特性,如果是的话,完成这些特性的时间会大幅度降低。现在,让我们看一下这些主要要特性。
我们从图形开始。Unity提供大量的图形API:OPenGL, OpenGL ES,WebGL,Metal和DirectX,每一套API都有一个目标平台。OpenGl用得最广,它可以运行在MacOS X,iOS,Linux还有Windows上。OpenGL ES适合一些移动设备,Andriod和iOS最为常见。WebGL是基于浏览器的图形应用和游戏的希望,它可以淘汰掉Flash插件和Unity的Web Player。Metal是苹果上新的图形API,它可以兼容最近的iOS设备和一些Californian公司的电脑。最后,DirectX,是微软自己的的图形API,兼容Windows, Windows Phone、XBOX。所以,UT的开发者花了大量的时间在图形上,但大部是用于将这些工具整合进引擎中,而不是从头开始写自己的API。
轮到物理引擎了,Unity信赖一个工具:Nvidia的PhysX,Unity发布的每一个平台,它都可以支持。毫无疑问,它是市面上最好的物理引擎,从每一版的游戏引擎开始,它就是值得信任和高效的,那时PhysX还被叫做Novodex,也没有被Nvidia收购。不同平台使用同一物理解决方案的主要原因是它的一致性:在不同的设备上,所有的碰撞、运行都必须有相同的行为,否则,某些平台就会更受欢迎。
更说一次,Unity依赖于终端工具实现灯光,不论是烘焙出来的灯光还是实时灯光。在以前,进行烘焙灯光用Autodesk的Beast,现在它被 Enlighten取代。在新的5.X版本中,它可以同时实现时实全局光照和烘焙灯光。
2014年,Unity内部发布了UNET(Unity的网络层),是Unity自主研发的多玩家的网络方案。过去,一些网络解决方案开始普及,最有名的就是Photon。新的工具包括两个方面,网络层的API(有API高低级别)和有偿的多人服务,不同于上面描述的图形、物理引擎和灯光,由于这是一个内部项目,UT必须移值代码到所有支持的平台上去。
最后:脚本
给那些还不了解Unity的人,Unity让我们使用C#和UnityScript脚本(EWW),不需要任何转换或是专门的工具,将我们的游戏输出到前面列出的平台上。好像很简单。引出了一个问题:如何做到的?我以为只要我停下来,想一想就可以得到答案,但即使我有一些Unity工作原理的认识破,我也不能回答为什么。所以,我问了这些年我最好的朋友(google)如本文标题的这个问题。这样说吧,我没有得到最好的反馈,后来,我找到了原因:我问了错误的问题。
本文中真实的明星是:Mono。我知道Mono对于Unity是很重要,但它远远超过了我所想。让我们从这里开始:Mono究竟是什么?根据官网:Mono是跨平台,开源的.net开发框架。还是有一些疑惑,让我们深入Mono的历史。
2000年微软发布了“基于inernet标准的新的平台”.Net的框架,Xamarin公司有一个叫Miguel de Icaza的人非常喜欢.NET,想开发Linux的版本,微软的.net不支持Linux(到现在还是不支持)和一些其他的非窗口平台。他干脆决定创建他自己的环境,Mono工程在2001开源。Mono由一个开源项目,把net框架被带入了其他平台,包括C#编译器和CLR(公同语言运行库)。从历史来看,Mono一开始就被放在了.net之后。今天它不仅实在了.net的功能,还有一些外的功能。总结一下,Mono是一个开源项目,用C/C++实现了.Net的开发框架,今天可以运行在一大堆平台上。
现在,我们停止讨论Mono,转到Unity上来。在Unity中,我们是如何用脚本编程?用C#或是UnityScript,这里又引出一个问题,如果我们用C#编程,为什么Unity游戏可以运行在如此多的平台上?难道在上不需要JAVA,在iOs上不需要用Object-C来代替C#?难道Unity编不同平台的游戏时不需要平台本地代码?如此多的问题。
我们从最后一个问题开始。不需要,Unity编不同平台的游戏不需要本地代码。听上去太疯狂了。Android不用JAVA?不用。你也可以用本地代码开发(用C/C++),但是没有人想那样做,对吗?那就是Mono做的事情。
现在我们说一说最重要的问题:没有C#的运行环境,为什么我的Android设备可以运行一个C#写的游戏?Mono运行了它。但是,我并没有在我的设备上安装Mono呢?所以,基本问题是:Mono是如何进入我的设备的?Unity编译的游戏(和用Mono开发的应用)运行了一个Mono环境。你疯了没有?我现在不能证明它,但是Xamarin在这里“How it works”声明过,非常有道理:
使用C#写你的APP,从C#中直接调用平台的API。Xamarin编辑器捆绑了.NET运行库,输出成一个ARM可执行文件,再打包进iOS和应用中。
这又产生了另一个问题:一个MONO发开APP附带了整个框架?答案可以在同一网页中找到:编辑Link的时候,在框架中没有使用的类会被剥离出来。所以,只是部分框架被绑定在你的APP中,如果你想了解更多的它是如何工作,访问网页
Developer Center。
所以,Mono是这里的上帝,它为Unity游戏提供了.Net框架。这是为什么,你使用C#编出来的游戏,能在如此多的平台上运行的原因。这是我的第一贴,我希望我能有更多的想法来更新博客。不论你喜欢或者不喜欢,或者某个地方有错,甚至你觉得这篇文章完全是胡扯,都可以请留言。
重要更新(2015年9月):IL2CPP技术改变了脚本后台工作的方式,淘汰了Mono的VM和AOT编辑器。
下面读什么?我写了一个新贴子,关于Unity3D在引擎之下是如何工作的,我们的代码是如何与引擎代码相交互的。
原文作者:sometimes I code
原文链接:https://sometimesicode.wordpress.com//how-does-unity-export-to-so-many-platforms/
文章标签:
unity5.0烘焙教程;
unity android il2
unity5.安装教程;
ios unity3d 微信分享;
unity5 烘焙灯光;
unity5.2 android交互;
unity5.0打包
unity5烘焙教程;
unity5.3烘焙教程;
unity5安装教程;
unity5.2安装教程;
unity5.0安装教程;
unity5.3.1安装教程;
unity5.2.2安装教程;
unity5.3.3安装教程;
unity5.1安装教程;
unity5.3.4安装教程;
unity5.0如何安装教程;
unity5.3安装教程;
unity3d 微信分享
unity3d ios 微信分享;
unity5灯光烘焙;
unity5.0灯光烘焙;
unity5.2灯光烘焙;
unity5和android 交互;
unity5 打包ios
下载地址:文件名称:http://bbs.jiandaima.com/thread-786-1-1.html文件大小:适用版本:更新日期:作者信息:
专业的游戏源码,it教学视频分享博客,按时更新,最好的游戏源码下载网站,源码分享网,捡代码论坛站长。Visual Studio 中的跨平台开发
跨平台开发
Visual Studio 中的跨平台开发
Visual Studio 2015
若要了解有关 Visual Studio 2017 RC 的最新文档,请参阅 。可使用 Visual Studio 生成适用于 Android、iOS 和 Windows 设备的应用。
设计应用时,可使用 Visual Studio 中的工具轻松添加连接的服务(如 Office 365、Azure Mobile Services 和 Application Insights)。使用 C# 和 .NET Framework、HTML 和 JavaScript 或者 C++ 生成应用。 共享代码、字符串、图像,甚至在某些情况下共享用户界面。如果想要生成一个游戏,请安装 Visual Studio tools for Unity 并借助 Unity 尽享 Visual Studio 中所有强大的高效功能。Unity 是一款受欢迎的跨平台游戏引擎和开发环境,主要针对在 iOS、Android、Windows 和其他平台上运行的游戏。本文内容:若要为 Android 或 iOS 创建应用,请安装 Xamarin,然后创建一个 Android 或 iOS 项目。 若要生成适用于 Windows 设备的应用,请选择通用的 Windows 应用项目模板。 如果你愿意,你可以在一个解决方案中同时面向 Android、iOS 和 Windows 设备,然后通过使用共享项目或可移植类库项目来在你所有的设备项目之间共享代码。了解更多信息 (VisualStudio.com) (VisualStudio.com)(MSDN 库)(MSDN 库) (VisualStudio.com) (download.microsoft.com)你可以使用 C# 为 Android 和 iOS 生成本机应用。
若要开始使用,请获取 Xamarin 许可证。 然后,安装 Xamarin,它会为 Visual Studio 安装 Xamarin 扩展。 完成之后,Android 和 iOS 项目模板会出现在“新项目”对话框中,如以下插图所示。这些模板将 Android 和 iOS 设备的本机功能显示为 C# 对象。 你的应用具有本机 API 和本机用户控件的完全访问权限,因此它们与使用 Objective-C、Swift 或 Java 编写的 Android 和 iOS 应用一样迅速响应。创建项目之后,可以利用 Visual Studio 的所有工作效率功能。 例如,你会使用设计器创建页面,并使用 IntelliSense 探索 Android 和 iOS 平台的本机 API。 当你准备好运行应用并查看其外观时,可使用适用于 Android 的 Visual Studio 仿真程序或选定的 Android 仿真程序。 对于 iOS 项目,连接到联网的 Mac,然后从 Visual Studio 启动 Mac 仿真程序。根据应用设计的复杂性,可以考虑使用项目模板“移动应用”组中的 Xamarin.Forms 模板生成应用。 Xamarin.Forms 是一个 UI 工具包,可用于创建在 Android 和 iOS 以及 Windows Phone 之间共享的单一界面。
编译 Xamarin.Forms 解决方案时,你会获得一个 Android 应用、一个 iOS 应用程序和一个 Windows phone 应用。 如果使用 ,也可以面向 Windows 平板电脑。虽然生成可在所有三个平台上呈现的用户界面极具吸引力,但请确保在进行投资之前查看此方法的优势和局限性。 如果你最终通过创建大量自定义控件呈现器来扩展框架,从而实现更复杂和定制的 UI 体验,则可能希望为每个平台分别设计单独的 UI。 但是你仍将享受使用一种语言 (C#) 带来的所有好处,可共享设备之间大量的代码,还有一种好处是可以共享特定于每个平台的所有高级设计工具(如适用于 iOS 情节提要文件的可视化设计器和用于可视化设计通用 Windows 应用的 Blend)。了解更多信息(Xamarin 网站)(Xamarin 网站)(Xamarin 网站)(Xamarin 网站) (Azure.com) (VisualStudio.com)若想创建面向全部 Windows 10 设备的单个应用,请创建通用 Windows 应用。 你将使用单个项目来设计应用,并且无论使用何种设备进行查看,页面都将正确呈现。使用通用 Windows 应用项目模板开始设计。 直观地设计页面,然后在预览窗口中将其打开以查看页面在各种类型设备中的显示方式。 如果你不喜欢某设备上的页面显示方式,可优化页面以更好地适应屏幕尺寸、分辨率或不同的方向(如横向模式或纵向模式)。 可使用 Visual Studio 中直观的工具窗口和易访问的菜单选项来执行所有这些操作。 如果已准备好运行应用和逐行执行代码,可在“标准”工作栏的一个下拉列表中找到所有设备仿真程序和不同类型设备的仿真程序。由于 Windows 10 是相当新的系统,因此你也将查找面向 Windows 8.1 的项目模板。 如果你愿意,可以使用这些项目模板,并且你的应用将在 Windows 10 手机、平板电脑和 PC 中运行。 但是,所有运行 Windows 8.1 的设备将收到自动升级到 Windows 10 的消息,因此除非你有面向 Windows 8.1 的特定原因,否则我们建议使用面向 Windows 10 的项目模板。了解更多信息(Windows 开发人员中心)(Windows 开发人员中心)如果不使用 Xamarin.Forms 并选择为每个平台单独设计,可在平台项目(Android、 iOS 和 Windows)之间共享大多数的非 UI 代码。 这包括所有的业务逻辑、云集成、数据库访问和其他所有面向 .NET 框架的代码。 唯一不能共享的代码是面向特定平台的代码。你可以通过使用共享项目、可移植类库项目或同时使用这两种项目来共享你的代码。 你可能会发现有些代码最适合在共享项目中使用,而有些代码在可移植类库项目中使用会发挥更好的效果。了解更多信息选择是否通过使用共享项目、可移植类库项目或同时使用这两种项目来共享你的代码。 (.NET Framework 博客) (Xamarin 网站) (MSDN 库)如果你是一名 Web 开发者并熟悉 HTML 和 JavaScript,则可以通过使用适用于 Apache Cordova 的 Visual Studio 工具来面向 Windows、Android 和 iOS 设备。 这些应用可以针对全部三个平台,还可以使用你最熟悉的技能和进程来生成。那么 Cordova 是什么? 简单地说,它是一个框架。 此框架包括插件模型。 此插件模型提供了一个可用于访问所有三个平台(iOS、Android 和 Windows)的本机设备功能的 JavaScript API。由于这些 API 是跨平台的,因此你可以在三个平台之间共享所编写的大部分内容。 这样可以减少开发和维护成本。 此外,无需从头开始。 如果已创建了其他类型的 Web 应用程序,则可以与 Cordova 应用共享这些文件,而无需以任何方式修改或重新设计。在开始之前,请安装 Visual Studio 2015 并在安装过程中选择 HTML/JavaScript (Apache Cordova) 功能。 如果你仍在使用 Visual Studio 2013,请安装 Visual Studio Tools for Apache Cordova 扩展。 此扩展会自动安装创建多平台应用所需的所有第三方软件。安装扩展后,打开 Visual Studio 并创建空白应用 (Apache Cordova) 项目。 然后,便可使用 JavaScript 或 TypeScript 来开发应用了。 也可以添加插件来扩展应用的功能,编写代码时插件的 API 会出现在 IntelliSense 中。如果已准备好运行应用并逐行执行代码,请选择一个仿真程序(如 Apache Ripple 仿真程序或适用于 Android 的 Visual Studio 仿真程序)或一个已直接连接到计算机的设备。 然后,启动应用。 如果是在 Windows PC 上开发的应用程序,则可在其中运行。 所有这些选项都作为 Visual Studio Tools for Apache Cordova 扩展的一部分内置于 Visual Studio 中。Visual Studio 中用于创建通用 Windows 应用的项目模板仍然可用,因此,如果你打算创建仅面向 Windows 设备的应用,则可以放心使用这些模板。 如果决定以后创建面向 Android 和 iOS 设备的应用,你始终可以将代码移植到 Cordova 项目中。 WinJS API 有开源版本,所以你可以对使用这些 API 的任何代码进行重复使用。 也就是说,如果你计划在将来创建面向其他平台的应用,建议你开始使用 Visual Studio Tools for Apache Cordova。了解更多信息 (VisualStudio.com) (taco.visualstudio.com) (VisualStudio.com)首先,安装 Visual Studio 和用于跨平台移动开发的 Visual C++。 随后,可以生成用于 Android 的本机活动应用程序或面向 Windows 设备的应用。 面向 iOS 设备的 C++ 模板尚不可用。 如果需要,可以在相同解决方案中面向 Android 和 Windows 设备,然后使用跨平台静态或动态共享库在它们之间共享代码。如果需要针对 Android 生成需要任何种类的高级图形操作(如游戏)的应用,则现在可以使用 C++ 来实现此目的。 从本机活动应用程序 (Android) 项目开始。 此项目完全支持 Clang 工具链。当你准备好运行你的应用并查看其外观时,请使用适用于 Android 的 Visual Studio 仿真程序。 它快速、可靠且易于安装和配置。你也可以使用 C++ 和通用 Windows 应用项目模板生成面向全部 Windows 10 设备的应用。 在本主题前面部分的
部分阅读有关此操作的详细信息。可以通过创建静态或动态共享库,在 Android 和 Windows 设备之间共享 C++ 代码。可以在 Windows 或 Android 项目中使用该库(如本节前面部分中所述的库一样)。 还可以在使用 Xamarin、Java 或任何允许在非托管 DLL 中调用函数的语言生成的应用中使用它。在这些库中编写代码时,可以使用 IntelliSense 探索 Android 和 Windows 平台的本机 API。 这些库项目与 Visual Studio 调试器完全集成,因此可以使用调试器的所有高级功能设置断点、逐句执行代码以及查找和修复问题。了解更多信息(VisualStudio.com)(MSDN 库)(VisualStudio.com)(MSDN 库) (VisualStudio.com) (VisualStudio.com)Visual Studio Tools for Unity 是一个免费的 Visual Studio 扩展,将 Visual Studio 功能强大的代码编辑、工作效率和调试工具与 Unity(针对面向 Windows 设备、iOS、Android 和其他平台的游戏的流行跨平台游戏引擎和开发环境)集成。借助 Visual Studio Tools Unity (VSTU),可以使用 Visual Studio 在 C# 中编写游戏和编辑器脚本,随后使用其功能强大的调试器查找和修复错误。 VSTU 的最新版本支持 Unity 5 并且包括以下功能:语法着色 Unity 的 ShaderLab 着色器语言、与 Unity 更好地同步、更丰富地调试提升了针对 MonoBehavior 向导的代码生成。 VSTU 还提供 Unity 项目文件、控制台消息以及在 Visual studio 中启动游戏的功能,从而使你可以在编写代码时花费更少的时间与 Unity 编辑器进行切换。立即开始使用 Unity 和 Visual Studio Tools for Unity 生成游戏。了解更多信息(MSDN 库)(MSDN 库)(Visual Studio 博客)(视频)(Unity 网站)
此页面有帮助吗?
更多反馈?
1500 个剩余字符
我们非常感谢您的反馈。Unity3d跨平台原理是什么? - 知乎115被浏览<strong class="NumberBoard-itemValue" title="1分享邀请回答1添加评论分享收藏感谢收起不了解Unity3D,所以偶然看到这段话就纳闷了: “Unity3D就是一个市场占有率非常大的基于Mono技术的使用 C# 进行跨平台游戏开发的技术” - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
已注册用户请 &
不了解Unity3D,所以偶然看到这段话就纳闷了: “Unity3D就是一个市场占有率非常大的基于Mono技术的使用 C# 进行跨平台游戏开发的技术”
14:58:52 +08:00 · 3517 次点击
8 回复 &| &直到
08:00:00 +08:00
& & 15:18:19 +08:00
分两段理解
1:Mono 是跨平台的 .net
2:Unity3D是基于Mono开发的
& & 15:24:20 +08:00
市场占有率非常大这个可以忽略不看。
& & 16:11:12 +08:00
@ 使用Unity3D引擎的还是比较多的,页游少点(因为需要下载控件),端游挺多。
& & 16:35:25 +08:00
@ 貌似windows下的还是directX居多吧,大型游戏来说。小型的一直不大清楚是用啥做的。如果是unity3D,那确实很有前途啊。
& & 16:48:08 +08:00
@ “端游”一般指PC客户端还是手机客户端?始终对这个分不清楚
& & 18:42:33 +08:00
@ 哈哈,同样不清楚的路过。但如果是近几年才流行起来的,我觉得应该是在手机端的会多点,顺便在网上查了下,貌似很出名的神庙逃亡就是用unity做的,貌似挺牛的样子。
& & 08:02:04 +08:00
这个明白,就是觉得有点奇怪,没想到Mono能很好的在生产环境下实现这样的功能
& & 09:51:44 +08:00
Mono = 開源版且跨平台的.Net
這就是為什麼開發Unity時常常要去查MSDN,因為底層是Mono。
市占率大這句話倒也不假,現在indie game領域已經接近Unity大一統的局面
@ 兩者是不同層級的東西,DirectX是繪圖API,Unity是遊戲引擎。Unity在Windows下運行也是使用DirectX繪圖。
& · & 2898 人在线 & 最高记录 3541 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.1 · 22ms · UTC 01:30 · PVG 09:30 · LAX 18:30 · JFK 21:30? Do have faith in what you're doing.}

我要回帖

更多关于 c 是跨平台的吗 的文章

更多推荐

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

点击添加站长微信