Unity WebGL 使用 WebAssembly Streaming

Unity WebGL using WebAssembly Streaming

我正在尝试使用 webassembly 流功能,但它不起作用。
我确实遵循了 WebAssembly 流式传输的服务器配置的统一文档说明。 https://docs.unity3d.com/2019.3/Documentation/Manual/Webgl-Server-configuration-for-WebAssembly-streaming.html

我使用的是 Unity 2019.2.20f1

在Unity播放器设置中,我将压缩格式设置为gzip并启用了WebAssembly流。

我将 .htaccess 文件添加到 Build 文件夹中。
以下是 .htaccess 文件的内容

<IfModule mod_mime.c>
  AddEncoding gzip .unityweb
  AddType application/wasm .wasm
  AddEncoding gzip .wasm
  AddOutputFilterByType DEFLATE application/wasm
</IfModule>

我还添加了

application/wasm    wasm 

到/etc/mime.键入

但是我遇到了这个错误。

wasm streaming compile failed: CompileError: WebAssembly.instantiateStreaming(): expected magic word 00 61 73 6d, found 1f 8b 08 18 @+0

我确实在设置了所需的修改后重新启动了服务。

我的 webgl 构建在没有 webassembly 流功能的情况下也能完美运行。
有谁知道这个问题以及我做错了什么吗?

遇到同样问题的朋友,我解决了这个问题

首先您需要在 httpd.conf 文件中启用 AllowOverride 才能使用 .htaccess 文件。
在我的例子中,它位于 /etc/httpd/conf
并使用 vi httpd.conf 命令
打开 httpd.conf 文件 并使用 /.htaccess 命令

找到 .htaccess

会有<Directory "/var/www"><Directory "/var/www/html">
你会看到它们的 AllowOverrides 都设置为 None.
您需要将它们更改为全部。

只需点击 i 即可进入插入模式,将 AllowOverride None 更改为 AllowOverride All
确保同时更改 /var/www/var/www/html
完成后,点击 ESC 并输入 :wq 保存修改并退出。

以下 .htaccess 文件不起作用。

<IfModule mod_mime.c>
  AddEncoding gzip .unityweb
  AddType application/wasm .wasm
  AddEncoding gzip .wasm
  AddOutputFilterByType DEFLATE application/wasm
</IfModule>

如下更改 .htaccess 文件即可。

Options +FollowSymLinks
RewriteEngine on
<Files "*.wasm">
    AddType application/wasm .wasm
    AddEncoding gzip wasm
</Files>
<Files "*.unityweb">
    AddEncoding gzip unityweb
</Files>

如果您使用的是 brotli,请将 gzip 更改为 br
最后,您必须使用 service httpd restart 命令重新启动 httpd 服务。
繁荣!现在可以使用了。

关于加载速度,我的意思是,肯定比非 WebAssembly Streaming 快。
但我的项目总共有 50mb 的数据大小,差异很小。
所以如果你的项目有大量的数据要加载,你应该试一试。
但如果不是那么大,不要指望这里会发生什么戏剧性的事情。