Unity WebGL构建运行失败:缺失[SceneName].loader.js报404错误求助
问题描述
使用搭载Ventura 13.2.1系统的MacBook Pro M1,在Unity 2021.3.14f版本中对WebGL项目执行「Build And Run」操作后,游戏启动时卡在显示Unity Logo的加载界面,进度条为空。Safari和Chrome浏览器控制台均出现如下错误:[Error] Failed to load resource: the server responded with a status of 404 (Not Found) ([SceneName].loader.js, line 0)
编辑器内通过Play按钮测试可正常运行,从Unity Cloud Build下载的构建包,通过自建Python服务器(执行命令:python3 -m http.server --cgi 52000)也能正常启动。
当前配置
Player Settings
- 压缩格式:Gzip
- 以哈希命名文件:未勾选
- 数据缓存:已勾选
- 调试符号:嵌入
- 解压回退:已勾选
- 性能偏好:高性能
Build Settings
- 纹理压缩:使用默认格式(DXT)
- 开发构建:未勾选
- 代码优化:尺寸优先
- 自动连接分析器(已禁用):未勾选
- 深度分析(已禁用):未勾选
- IL2CPP代码生成:更快运行时
疑问
[SceneName].loader.js是否包含在本地Build And Run的构建产物中?- 该问题是否源于代码或配置缺失?
解答
文件存在性验证
先检查本地Build And Run生成的构建目录:
打开Unity构建时指定的输出文件夹,查看是否存在[SceneName].loader.js文件。由于Cloud Build的包能正常运行,说明该文件本身属于标准构建产物,本地构建大概率是生成过程遗漏,或是Unity内置临时服务器未正确读取到该文件。
问题排查与解决方向
Unity内置服务器路径问题
Unity的「Build And Run」会启动内置本地服务器,可能因M1芯片的文件系统权限、路径包含特殊字符(如中文、空格),导致服务器无法定位[SceneName].loader.js。可尝试:- 将构建输出目录改到路径更简洁的位置(如
~/Desktop/WebGLBuild),避免特殊字符或层级过深。 - 给Unity编辑器赋予完整磁盘访问权限:打开「系统设置-隐私与安全性-完整磁盘访问权限」,添加Unity应用。
- 将构建输出目录改到路径更简洁的位置(如
构建缓存冲突
本地构建缓存损坏可能导致文件生成遗漏,操作步骤:- 关闭Unity,删除项目目录下的
Library、Temp、Obj文件夹。 - 重新打开项目,通过顶部菜单「File-Build Settings-Clear Cache」清理构建缓存,再重新执行Build And Run。
- 关闭Unity,删除项目目录下的
Gzip压缩与内置服务器兼容问题
当前开启了Gzip压缩,Unity内置服务器可能未正确处理Gzip格式文件,导致加载失败。可临时将压缩格式改为「Disabled」重新构建测试:若能正常运行,说明是内置服务器对Gzip的支持存在问题,此时可继续使用Cloud Build包或自建Python服务器运行,也可升级Unity至更高版本LTS修复兼容问题。IL2CPP代码生成设置调整
尝试将IL2CPP代码生成选项从「Faster runtime」改为「Faster builds」,重新构建后查看问题是否解决。
内容的提问来源于stack exchange,提问作者Maximilian Hung

