部署压缩构建
当您在发布模式下构建WebGL项目时(请参Publishing builds(阅发布构建)),Unity会压缩构建输出文件以减少构建的下载大小。您可以从发布设置(菜单:Edit > Project Settings > Player > Publishing Settings)中的压缩格式选项中选择使用的压缩类型:
- gzip: 这是默认选项。 gzip文件比Brotli文件大,但构建速度更快,并且由http和https上的所有浏览器本地支持。
- Brotli: Brotli压缩提供了最佳的压缩比。 Brotli压缩文件比gzip小得多,但需要很长时间才能压缩,从而增加了发布版本的迭代时间。 Chrome和Firefox通过https原生支持Brotli压缩(有关更多信息,请参阅 WebGL browser compatibility(WebGL浏览器兼容性))。
- Disabled: 这会禁用压缩。如果您想在后处理脚本中实现自己的压缩,请使用此选项。
压缩构建的Unity可以在任何浏览器上构建工作。 Unity包含一个用JavaScript编写的软件解压缩程序,当服务器未启用http传输级别的压缩时,它将回退到原来的位置。
Advanced: Native browser decompression 高级:本地浏览器解压缩
在下载构建数据时,浏览器可以处理Unity本身的解压缩。这样做的好处是避免了JavaScript文件解压引起的额外延迟,从而缩短了启动时间。为了让浏览器本地处理解压缩,需要将Web服务器配置为使用适当的http头来提供压缩文件:这些告诉浏览器数据使用gzip或Brotli进行压缩,以便在传输数据时对数据进行解压缩。仅在https上支持Firefox和Chrome支持Brotli压缩,而所有浏览器都支持gzip压缩。请参阅WebGL浏览器兼容性了解更多信息。
Setting up web servers 设置网络服务器
本地浏览器解压缩的设置过程取决于您的Web服务器。本页面上的说明适用于两个最常见的Web服务器Apache和IIS。请注意,这些设计用于默认设置,但可能需要进行调整才能匹配您的特定配置。尤其是,如果您已有其他服务器端配置来压缩托管文件,则可能会出现问题,这可能会影响此设置。其基本思想是将一个Content-Encoding头添加到服务器响应中,对应于构建时使用的压缩类型。这将允许浏览器在下载过程中本地和异步执行解压缩。
Apache
Apache服务器使用不可见的.htaccess文件进行服务器配置。下面的代码显示了可用于实施本地浏览器解压缩的.htaccess文件的示例。请注意,Apache服务器配置设置是可选的。
对于gzip压缩版本,将以下.htaccess文件放入Build子文件夹中:
<IfModule mod_mime.c>
AddEncoding gzip .unityweb
</IfModule>
对于brotli压缩版本,将以下.htaccess文件放入您的Build子文件夹中:
<IfModule mod_mime.c>
AddEncoding br .unityweb
</IfModule>
IIS
必要的IIS服务器配置步骤:
默认情况下,IIS服务器不提供未知MIME类型的静态内容。为了使Unity在IIS上构建工作,首先需要将.unityweb扩展与应用程序/八位字节流内容类型关联。有两种方法可以实现这一点:
使用IIS管理器界面:在IIS管理器面板中选择您的网站,打开MIME类型功能并选择添加...操作。将.unityweb设置为文件扩展名,将application/octet-stream设置为MIME类型,单击确定。
使用服务器配置文件:IIS使用web.config文件进行服务器配置。这些配置文件反映了IIS管理器为特定文件夹所做的所有更改。为了将application/octet-stream MIME类型与.unityweb扩展相关联,可以使用以下web.config文件:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<staticContent>
<remove fileExtension=".unityweb" />
<mimeMap fileExtension=".unityweb" mimeType="application/octet-stream" />
</staticContent>
</system.webServer>
</configuration>
请注意,配置文件会影响所有服务器子文件夹,因此只需在服务器根文件夹中将.unityweb扩展名的MIME类型设置为一次即可。
可选的IIS服务器配置步骤:
为了加快构建启动时间,您可以选择使用以下配置文件。请注意,为了使用此设置,您需要安装Microsoft的IIS URL Rewrite IIS module;否则,浏览器将抛出500内部服务器错误。
对于gzip压缩版本,将以下web.config文件放入Build子文件夹中:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<staticContent>
<remove fileExtension=".unityweb" />
<mimeMap fileExtension=".unityweb" mimeType="application/octet-stream" />
</staticContent>
<rewrite>
<outboundRules>
<rule name="Append gzip Content-Encoding header">
<match serverVariable="RESPONSE_Content-Encoding" pattern=".*" />
<conditions>
<add input="{REQUEST_FILENAME}" pattern="\.unityweb$" />
</conditions>
<action type="Rewrite" value="gzip" />
</rule>
</outboundRules>
</rewrite>
</system.webServer>
</configuration>
对于brotli压缩版本,将以下web.config文件放入Build子文件夹中:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<staticContent>
<remove fileExtension=".unityweb" />
<mimeMap fileExtension=".unityweb" mimeType="application/octet-stream" />
</staticContent>
<rewrite>
<outboundRules>
<rule name="Append br Content-Encoding header">
<match serverVariable="RESPONSE_Content-Encoding" pattern=".*" />
<conditions>
<add input="{REQUEST_FILENAME}" pattern="\.unityweb$" />
</conditions>
<action type="Rewrite" value="br" />
</rule>
</outboundRules>
</rewrite>
</system.webServer>
</configuration>
请注意,当内容类型已在服务器目录层次结构中的较高级别上覆盖内容类型时,需要<remove fileExtension =“。unityweb”/>
行来处理这种情况,否则可能导致服务器异常。
Unity WebGL 中文文档 Unity 2018.1.b
1. WebGL
2. webGL Browser Compatibility
3. Building and running a WebGL project
4. WebGL: Deploying compressed builds
5. Debugging and trouble shooting WebGL builds
6. WebGL Graphics
7. WebGL Networking
8. Using Audio In WebGL
9. WebGL performance considerations
10. WebGL: Interacting with browser scripting
11. Using WebGL Templates
12. Cursor locking and full-screen mode in WebGL
13. Input in WebGL