Unity 脚本的未来发展

简介:
+关注继续查看



新技术之IL2CPP

最近,我们谈到了Unity 的WebGL 。 在那篇文中我们简要谈论到脚本在 WebGL  中的运行的新技术称为“IL2CPP” 。然而IL2CPP 所代表的不只是适用于WebGL 的脚本解决方案,同时也是我们自己为了在更多平台上执行 .NET时能有高效能的方案。

Unity 中脚本的现状

在深入探究未来之前,让我们先谈谈现在吧。

我们利用Mono (以及在 Windows Store App 和Windows Phone 上的WinRT )让C#变得容易使用,存取第三方资料库并最接近原生平台的效能。但是仍然有些挑战必须要解决:

• C# 运行时效能仍不如C/C++

• Unity 的当前版本Mono 不支援最新的.NET版本功能。

•同时要维持约 23 个平台转换结构,在移植、维护以及保证功能与效能都达到最好需要投入大量精神。

•执行时,垃圾回收可能会导致暂停。

在过去几年中我们试图解决这些问题,但是进展不大。 同时针对WebGL 支援脚本的研究开始。 随着这两项研究的深入,我们将这两条路径合二为一。

问题范围明确,我们为了解决这问题尝试了各种不同实验。有些方法有希望解决问题,有些则否。最终我们发现了一个创新的解决方案,这正确方向就是  IL2CPP 。

IL2CPP: 简单介绍

      IL2CPP 由两部分组成: 一个预先编译器( Ahead of Time (AOT) compiler) 和一台虚拟机( Virtual Machine (VM) )。

这两部分意味着我们对通用语言基础结构( Common Language Infrastructure) 的实现,类似于.NET 或Mono 。 它与Unity 中目前的脚本相容。

从根本上来说它不同于及时编译,因为IL2CPP 编译器会将程式转换成C++ 源始码,然后再利用标准 C++ 编译器来产生原生二进制文件。

在执行时也会把 IL2CPP 虚拟机所提供的其它服务带过去(如GC 、中继资料、平台资源)。

IL2CPP 的优势


我们再来谈谈前面所提到的每个问题,看看IL2CPP 如何一一解决。

性能

      IL2CPP会在基于 C# 的易用性和高效性的同时,带来C++ 的卓越性能。

      目前有效率的脚本工作流保持不变,同时提升性能。 我们已经测试过在一些脚本很多的程式中性能提升了2 至3 倍。这种性能提升要归功于几个因素。

• C++ 编译器和连结器提供了大量之前没有的进阶优化功能。

• 静态分析是用于优化大小和速度的程式上执行的。

• 以Unity 为中心的脚本执行时优化。

虽然IL2CPP 还处于发展阶段,但初期的测试已经可预期未来的发展很棒。

.NET 升级

我们经常收到希望我们升级.NET版本的请求。 尽管.NET 在过去几年取得了一些进步,Unity 对C # 编译器和类别库目前仍支持.NET 2.0/3.5 时代的功能。 许多用户要求要把新功能加入好让他们的程式和第三方资源库使用。

随着IL2CPP 的日益成熟,我们会将升级 Mono C# 编译器、类别库和编辑器(由于版本开发快速取代,编辑器不会转换到IL2CPP )到最新版本。 这将为Unity 带来一个现代版的.NET 。

同样值得一提的是,我们正与微软合作将现有和未来的.NET 功能放入Unity ,以确保相容性和效能。

可移植性和维护

虽然这个部分听起来像是一个应由Unity 处理的问题,但它也会对开发者产生影响。Mono 虚拟机拥有大量的平台和结构相关的程式码。 当我们把Unity发布到一个新的平台时,我们将为该平台投入大量的精力来移植和维护Mono 虚拟机。

不同的功能(以及Bug)可能存在于不同平台。 这将会影响到Unity想要为开发者创造的价值,就是我们希望开发者可以轻松地将相同内容部署到不同平台。

IL2CPP 以多种方式解决这些问题:

• 所有的程式都改为转换 C++ ,而非结构不同机器的代码。 移植和维护所产生的成本就可以得到更清楚的数据。

•新功能开发和Bug维护的速度会更快。 对我们而言,本来要花几天时间处理不同平台的结构转换变为花数分钟更改C++转换流程。 功能及Bug修复可立即用于所有平台。

照目前情况来看,如果支援IL2CPP可以在很短的时间内移植到新平台。

此外,统一化编译器的性能优化绝对远远优于一个一个维护不同的程式转换器。 这使我们能够重复利用已经导入 C++ 编译器的功能,而不需要重新做一个。

垃圾回收

      IL2CPP 并没有连接任何一个垃圾回收器,而是开了一个API接口。 目前的版本中,IL2CPP 使用的是libgc 的升级版。除了​​GC 本身,我们也正在研究通过IL2CPP 编译器中完成的分析来减少GC 压力。

虽然此刻只有这些资料与开发者分享,但研究仍在持续在进行。 我们知道会有很多人关心这个发展,所以我们不会松懈并会保持提供最新消息。

与IL2CPP 无关,但偷偷地透露在垃圾回收的情况,Unity 5 .x  将会有越来越多无需分配的API 。

什么是IL2CPP不做的

      IL2CPP 并不是对整个.NET 或Mono 工具进行重新改写。我们将继续使用Mono C# 编译器(之后可能还会用到Roslyn )。 也会继续使用Mono 类别库。 目前对Mono 预编译器有效的所有功能和第三方资源库也会对IL2CPP相容。我们只是尝试提供一个虚拟机和预编译器的替代产品,我们还将继续利用性能卓越的Mono专案。

何时才能体验IL2CPP ?

现在我们希望您也像我们一样,对即将来临的 IL2CPP 感到兴奋,迫切地想知道何时才能使用 IL2CPP !

IL2CPP 的最初版本将在 Unity 5 中WebGL 发布的部分看到。

除了​​WebGL 之外,我们还在继续为Unity其他发布平台开发IL2CPP 。 事实上,我们已经在许多我们支援的平台上进行了一些工作。 预计将在年末至少再推出一个平台。 目前的计划是让iOS 成为下一个载有IL2CPP 支持的平台。

等到IL2CPP 可在多个平台上使用并且成熟之时,计划的Mono 工具升级将会接踵而来。

有一个平台永远不会受IL2CPP 支援,那就是WebPlayer,这是因为安全隐忧。 所以如前面所提的,Webplayer编译器仍将继续使用Mono 。

现在就可以看到IL2CPP执行时的效果。我们之前发布的两个WebGL Demo就是支援了 IL2CPP 。

Dead Drigger 2 IL2CPP范例

接下来?

我们仍在为IL2CPP 埋头苦干的实现新功能、优化程式转换、修复漏洞并支援更多平台。 随着发展我们将继续发布更多官方消息与您分享。

资料

转自(墙外):Unity 脚本的未来发展


本文转自赵青青博客园博客,原文链接:http://www.cnblogs.com/zhaoqingqing/p/3842690.html,如需转载请自行联系原作者


相关文章
|
6天前
|
人工智能 算法 BI
Unity——脚本与导航系统
Unity——脚本与导航系统
|
6天前
|
人工智能 图形学
Unity物理系统脚本编程(上)
Unity物理系统脚本编程(上)
|
6天前
|
算法 图形学
Unity物理系统脚本编程(下)
Unity物理系统脚本编程(下)
|
6月前
|
人工智能 API 图形学
unity基础脚本代码总结
unity基础脚本代码总结
94 0
|
10月前
|
存储 Go 图形学
Unity3D赛车游戏+脚本基础
Unity3D赛车游戏+脚本基础
Unity3D赛车游戏+脚本基础
|
JavaScript 前端开发 程序员
用Unity不会几个插件怎么能行?Unity各类插件及教程推荐
话说工欲善其事必先利其器,程序员总是有一些开发利器,而对于Unity3D开发程序员来说,插件就是非常好用的利器。 今天博主,就将比较好用的插件推荐给大家,希望一起学习品鉴。
|
vr&ar 图形学
【Unity3D 灵巧小知识点】☀️ | Unity脚本生命周期
Unity小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。 包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。 也可以简单把 Unity 理解为一个游戏引擎,可以用来专业制作游戏!
【Unity3D 灵巧小知识点】☀️ | Unity脚本生命周期
|
C# 图形学
优化Unity游戏项目的脚本(下)
金秋9月,我们祝所有的老师们:教师节快乐 ! 今天,我们继续分享来自捷克的开发工程师Ondřej Kofroň,分享C#脚本的一系列优化方法。 在优化Unity游戏项目的脚本(上)中,我们介绍了如何查找C#脚本中的问题,以及垃圾回收的处理。
|
开发框架 Java .NET
优化Unity游戏项目的脚本(上)
本文将由捷克独立游戏工作室Lonely Vertex的开发工程师Ondřej Kofroň,分享C#脚本的一系列优化方法,并提供改进Unity游戏性能的最佳实践。 在开发游戏时,我们遇到了游戏过程中偶尔出现延迟的问题。
|
图形学 UED
Unity2018新功能探索|图形渲染、下一代Runtime、众多美工工具!
关于Unity2018Unity2018增强了Unity的核心技术, 让创作者能够充分发挥自身才智,进行更有效协作。探索Unity广告如何获取新的用户利用Unity Ads全球广告网络推广游戏,坐拥广大新玩家访问高级游戏娱乐内容10亿以上的独立设备玩家触手可及在正确场合适时获取目标玩家,即玩家参与度最高时创作者的工作空间Unity Editor是艺术家、设计师、开发者和其他职业人员的创意中心,有2D 、3D场景设计工具, 故事和电影, 灯光, 音响系统,精灵管理工具,还有粒子特效和功能强大的dopesheet 动画系统。
1871 0