Unity 5.3 中WebGL的更新
即将发布的 Unity 5.3 是第四个支持 WebGL 发布的 Unity 版本。自 Unity 5.0 首次发布 WebGL 预览版以来,我们取得了诸多进展,现将相关更新内容分享如下。
一、Unity 5.3 中 WebGL 的具体更新
1. Unity Standard Shader 采用桌面级质量反射函数
此前,Unity WebGL 使用基于 OpenGL ES 2.0 图形库的移动简化版 Standard Shader。如今,WebGL 采用了与桌面应用相同的反射函数,显著提升了素材质量。
2. 支持软阴影
此功能为场景渲染带来更真实的光影效果,增强了画面的沉浸感。
3. 自动处理压缩问题
以往,WebGL 要求将 Web 服务器设置为 gzip 压缩模式,以避免用户下载庞大的未压缩文件,但该设置过程复杂困难。现在,WebGL 在运行时,若 Web 服务器未正确设置提供压缩数据,会自动下载 gzip 压缩格式的数据。压缩数据随后在客户端通过 JavaScript 解压。虽然协议级别的压缩处理会增加额外延迟(若服务器配置正确则不受影响),但用户无需再查阅服务器手册以避免巨大的下载请求。
4. 数据文件以 LZ4 压缩格式存于内存
在 WebGL 中,无需访问真实文件系统,所有 Asset 会一直保留在内存中。在 Unity 5.3 里,内存中的 Asset 数据将使用 LZ4 算法进行压缩,仅在加载时解压。这使得 Asset 数据占用内存更少,程序出现内存耗尽的概率降低。
5. 轻松重定位构建文件 URL
所有构建过程中产生的文件引用地址都能在生成的 index.html 中找到。若要将构建数据部署到外部主机,操作变得简单,因为所有需设置的 URL 都集中在一处。
6. 支持 WebCam
Unity 5.3 版本在 Unity WebGL 中增加了对 WebCamTexture 类的支持,可在任何支持 getUserMedia API 的浏览器中访问已连接的摄像头。
7. 成为 Unity Cloud Build 平台选项
团队成员可直接在浏览器中测试游戏/应用,提高了开发和测试效率。
8. 改进 WebGL 文档
针对 5.3 版本,重新制作了 WebGL 文档,增加了许多额外信息,详细记录了目前 WebGL 平台尚不支持以及仅受特定浏览器支持的内容。
9. 修正 BUG
与 Unity 5.2.x 相比,Unity 5.3 在 WebGL 方面进行了 28 个 Bug 修正,还有许多惠及 WebGL 用户但不单独针对该平台的修正。此外,部分针对 WebGL 的 Bug 修正已在 5.2.x 发布周期中随不同补丁部署,现均已集成到 Unity 5.3 中。
二、WebGL 成为官方支持构建目标
此前,Unity 中的 WebGL 仅是不受支持的预览版本。在 Unity 5.3 中,将去除“Preview”标签,使 WebGL 成为官方支持的构建目标,白金及企业级支持计划将覆盖该平台。
自 5.0 初次推出 WebGL 以来,它已发生巨大变化。同时,浏览器技术也在不断进步,如微软在 Windows 10 中发布的新 Edge 浏览器,支持 asm.js,能更好地运行 Unity WebGL 内容,增加了 Unity WebGL 内容的潜在受众。
不过,WebGL 虽有诸多改进,但并不意味着能使用所有 Unity 特性、达到原生构建性能或在所有浏览器上可靠运行,这些方面的改进是渐进的。总体而言,目前已有能在平台约束下正常工作的产品,因此宣布对 WebGL 构建对象提供官方支持。关于在不同浏览器上可能遇到的限制,将在文档中说明。
三、与浏览器厂商的合作
WebGL 部署解决方案高度依赖浏览器提供的技术支持。过去几年,我们与各大主要浏览器厂商密切合作,推动相关技术发展。
Mozilla 的平台产品管理主管 Martin Best 表示:“今天是一个里程碑,Unity 进一步为 WebGL 导出对象提供全面支持。Mozilla 首倡的 asm.js、WebGL 以及 Emscripten 等技术为此提供了可能,我们将继续积极与 Unity 以及其他浏览器厂商紧密合作,打造最佳的 Web 游戏体验。”
专注于 Edge 与 Open Web Standard 的微软 Principal Program Manager David Catuhe 评论道:“WebGL 以及 asm.js 是 Microsoft Edge 为 Windows 10 用户提供完善 web 体验的重要组成部分。随着 WebGL 构建目标的发布,Unity 使开发者能为我们的用户提供更好的 Web 游戏体验。同时,这也是我们继续共同改进 WebGL、asm.js 及其他功能的良好契机。”
Google Chrome WebGL 团队的 Brandon Jones、Zhenyao Mo 以及 Ken Russell 表达了相似观点:“Unity 对 HTML5 以及 WebGL 部署的支持是当下生态中最令人激动的进展。全球开发者将借助 Unity 的工具链把精彩游戏带到 Web 上。我们期待针对 Web 平台性能与功能的持续改进带来更精彩的交互式内容。”
我们坚信,Unity 的 WebGL 导出将是 Web 游戏的未来,欢迎加入已发布的 Unity WebGL 游戏名单。