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 的数据大小,差异很小。
所以如果你的项目有大量的数据要加载,你应该试一试。
但如果不是那么大,不要指望这里会发生什么戏剧性的事情。
我正在尝试使用 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
命令
会有<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 的数据大小,差异很小。
所以如果你的项目有大量的数据要加载,你应该试一试。
但如果不是那么大,不要指望这里会发生什么戏剧性的事情。