IT培训-高端面授IT培训机构
云和教育:云和数据集团高端IT职业教育品牌 全国咨询热线:0371-67988003
课程 请选择课程
    校区 请选择校区
      • 华为
        授权培训中心
      • 腾讯云
        一级认证培训中心
      • 百度营销大学
        豫陕深授权运营中心
      • Oracle甲骨文
        OAEP中心
      • Microsoft Azure
        微软云合作伙伴
      • Unity公司
        战略合作伙伴
      • 普华基础软件
        战略合作伙伴
      • 新开普(股票代码300248)
        旗下丹诚开普投资
      • 中国互联网百强企业锐之旗
        旗下锐旗资本投资

      【技术分享】Unity网页平台发布的未来

      • 发布时间:
        2014-12-18
      • 版权所有:
        云和教育
      • 分享:

      数周前在 GDC,我们宣布 Unity 5 支持 WebGL 发布。现在,我想与你们分享相关详细信息以及用户可以期待从中获得什么。

      背景

      WebGL 是内置到浏览器的 3D 图形库,可在无需任何插件的情况下,使 JavaScript 程序在支持的浏览器内进行 3D 渲染。对我们而言,这看似非常适合在 Web 上运行 Unity 内容,因为它将带给终端用户最无障碍的体验:浏览器会提供立即可用的一切需求,而且无需用户安装任何插件,一切都会正常运行。

      但是,我们起初对于这在技术上是否可行存有疑虑,因为 WebGL 是 JavaScript API,这意味着我们所有的代码(我们的 Unity 运行时代码和您的游戏代码)均需在 JavaScript 中运行。但同时,我们认为这项技术太酷了,我们必须进行尝试。因此两年前我们在哥本哈根的 HackWeek 开始对它进行试验。此外,那时我们还与 Mozilla 进行了沟通。Mozilla 非常乐意帮助我们证明这项技术是可行的,因此他们派遣了一些工程师到哥本哈根与我们合作。

      我们用更多几个 HackWeek 进行反复试验,并在浏览器方面进行一些开发,直到我们意识到可开发出实际可行的产品,这时我们开始进行真正的工作。

      为了让您对现状有一定的了解,在此提供导出到 WebGL 的 Unity 播放器,带有当前的 Unity 5 alpha 版。

      当前支持此内容的浏览器是 Firefox 和 Chrome 35(Chrome 35 当前为 beta 版,并且必须使用此版本,因为当前的 Chrome 34 发布版本有一个 JavaScript 漏洞,可导致该游戏僵死)。

      请点击以下图标,在您的浏览器中播放 《死亡扳机 2》(Dead Trigger 2)(由 Madfinger games 制作),在 WebGL 中展示身临其境的全屏 FPS 体验。控制方式如下:WASD 控制行走,鼠标查看,Q 切换武器,Tab 切换到近战格斗,1、2、3 代表特殊力量(请尝试!)。

      这是我们的经典 愤怒的机器人(AngryBots) 演示版(在 Firefox 和 Chrome 的发布版本中运行正常):

      技术细节

      如上所述,要在 WebGL 中运行,我们的所有代码都必须是 JavaScript。我们使用 Emscripten 编译器工具链来将 Unity 运行时代码(用 C 和 C++编写)交叉编译到 asm.js JavaScript 中。asm.js 是 JavaScript 极具可优化性的子集,可使 JavaScript 引擎将 asm.js 代码 AOT 编译到非常高性能的原生代码。

      要将 .NET 游戏代码(您的 C# 和 UnityScript 脚本)转换为 JavaScript,我们内部开发了一项名为 IL2CPP 的新技术。IL2CPP 获取 .NET 字节代码,并将其转换为相应的 C++ 源文件,然后我们可使用任何 C++ 编译器(例如 Emscripten)来将您的脚本转换为 JavaScript。敬请期待有关 IL2CPP 的详细信息。

      Unity 5.0 中的 WebGL

      我们计划将 Unity 5.0 中可用的 WebGL 支持作为早期访问插件(在您询问之前,我们先告诉您:此插件的条款和价格待定。)早期访问表示可将内容发布到 WebGL(如以上示例),但在功能和浏览器兼容性方面会有一些限制。特别是不支持以下功能:

      • Substance纹理的运行时生成

      • 影像纹理

      • 不同于 WWW类的网络实现(一个WebSockets 插件)

      • 支持网络摄像头和麦克风访问

      • 硬件光标支持

      • 许多非基本音频功能

      • 脚本调试

      • 线程

      • 任何需要动态代码生成的 .NET 功能。

      在浏览器支持方面,此最初版本将仅支持 Firefox 和 Chrome 的桌面版(其他浏览器可能对某些内容可用,但仅这两种浏览器受到官方支持)。

      我们可望在 5.x 发布周期内解决大部分此类局限(平台导致的限制除外),并可支持更多的浏览器和成熟平台,这时我们将摈弃早期访问标签,使 WebGL 成为 Unity 中完全受支持的构建平台。

      Unity 5 中的 Unity Web Player

      虽然 WebGL 是非常激动人心的新技术,但当前 Unity Web Player 仍然是 Unity 针对 Web 的功能最完善的且性能最高的解决方案,并将继续在 Unity 5.x 中作为支持的平台。同时使用 WebGL 和 Web Player 来双重发布您的内容可能是非常有用的策略,可最大范围覆盖受众。

      但是,从更长远的角度看,我们希望 Web Player 和 WebGL 之间在性能和功能方面的差距大大缩小,我们还希望浏览器供应商通过放弃对插件的支持来淘汰 Web Player,届时 WebGL 将成为 Unity 针对 Web 的主要解决方案。