如何运行本地的Unity WebGL(file:// url)构建?

25

尝试打开本地Unity WebGL构建时,多个浏览器(Chrome、Firefox、Internet Explorer)会给出以下错误:

看起来您的浏览器不支持从file:// urls运行Unity WebGL内容。请将其上传到http服务器或尝试其他浏览器。

Microsoft Edge可以运行它,但我想知道是否有任何设置可以更改以在Chrome / Firefox /其他浏览器上运行。


这是一个有趣的问题,因为WebGL可以替代Flash,但是没有打开文件的能力,它至少变得很繁琐,并限制了它的潜力。 - Forestrf
Edge目前不支持。 - Surya
4个回答

27

只需打开终端并进入您的目录(HTML文件所在的位置),然后使用以下命令之一启动服务器。

python -m CGIHTTPServer 8360
python -m http.server --cgi 8360
python3 -m http.server --cgi 8360

这将为您打开端口。

然后,请将您的浏览器定向到http://localhost:8360/YOURFILENAME.html 默认情况下,通常是index.html ;)


它说没有安装CGIHTTPServer。 - Mert
那为什么不安装它呢? - Charles
3
不再需要cgi参数。python -m http.server <portNum> 对我来说很好用,尽管我通常会添加-u参数,以便在运行时查看输出。(使用Python v3.9.2) - Sirius 5
看起来这很慢:请参见https://dev59.com/92cs5IYBdhLWcg3wXi1E。最好使用Node或Git。 - david.pfx
似乎无法与压缩构建一起使用。至少在我的Python 3.10安装中,http.server无法正确地提供Content-Encoding头,导致WebGL Player出现错误。 - RHS

15

在本地运行Unity-WebGL应用程序的正确方法是使用简单的服务器。

即使是Unity自身也会作为一个小型Web服务器来运行,从编辑器中运行WebGL构建。

这里有一个这里有另一个这里还有其他一整个清单

关闭浏览器安全性就像关闭病毒扫描器或防火墙一样不可取。不要这样做。特别是当正确的方式如此简单时。


“正确的”方式 - 好了,我已经为你修复了。¬_¬ - Synetech
运行得非常好! - Surya
servez 对我有效,尝试了其他方法都不行。谢谢! - Vipin Verma

5

这些说明来自于 Tim Chamillard博士的游戏开发课程:

Firefox (建议使用此浏览器运行WebGL)

  1. 在导航栏中输入about:config
  2. 搜索security.fileuri.strict_origin_policy参数
  3. 单击该参数将其更改为false

Chrome

  1. 如果没有Chrome快捷方式,请在桌面上添加一个
  2. 右键单击该快捷方式并选择属性
  3. 选择目标文本框,移动到末尾,添加一个空格和 --allow-file-access-from-files
  4. 双击WebGL构建的index html文件,当浏览器打开时复制导航栏中的URL
  5. 关闭浏览器
  6. 使用快捷方式启动浏览器,粘贴你在步骤4中复制的URL并按回车键

Microsoft Edge

不需要做任何事情,WebGL构建可以正常工作。

Safari

  1. 使用高级选项卡下的“显示开发菜单”启用开发菜单
  2. 从Safari“开发”菜单中选择“禁用本地文件限制”

通常情况下,在进行这些更改后重新启动计算机,因为浏览器需要这样做,有些浏览器不需要。


2
只要能让我工作,那就不算太糟糕。显然,你应该知道自己在改变什么,但特别是在Chrome的情况下(可以使用单独的实例来测试WebGL和常规互联网使用),这是一个非常方便的建议。我宁愿这样做,也不想安装本地Web服务器。 - Eric
这是否意味着Microsoft Edge的安全性较差,还是它能够区分在本地运行网页和访问不安全位置的文件之间的差异? - Ingemar Ragnemalm
我完全理解关闭安全措施是不好的,但当这是我唯一可行的解决方案时,我别无选择。所以这是我的解决方案:我在断开网络连接的笔记本电脑上进行开发。当需要在线测试时,我要么将文件移动到另一台计算机上,要么重新启用安全性。虽然有些麻烦,但总比无法本地运行要好。 - Ingemar Ragnemalm
@eric,我猜你可能和我曾经一样认为安装Web服务器是件大事。实际上并不是这样的。有像Apache或IIS(那还在用吗?)这样深入系统的庞然大物,也有仅需运行一个简单命令行工具(https://github.com/greggman/servez-cli)或一个简单应用程序(https://greggman.github.io/servez/)就可以完成的微型Web服务器。整个过程只需要1-5分钟。 - gman

0
如果你仍然遇到问题,我建议你查看这个链接:uusoft.itch.io/unity-webgl-local-hoster。这是一个非常好用的免费开源工具,可能会帮助你在本地托管Unity WebGL构建。试试看,看看是否能解决你的问题! 编辑:这段代码似乎是由原帖作者编写的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接