非移动设备打开Unity WebGL井字棋提示移动端不支持错误
错误原因
- Unity WebGL内置的移动端UA检测逻辑误判:不同Unity版本的默认检测规则不一致,若两个项目使用的Unity版本不同,井字棋项目使用的版本可能存在更严格的移动端判定规则,桌面端浏览器UA中若包含touch、平板设备标识等字段,就会被误识别为移动设备。
- 项目配置差异:井字棋项目的WebGL构建配置中可能意外开启了移动端相关选项,比如仅添加了OpenGLES移动端图形API、开启了移动端输入兼容配置、使用了带移动端检测逻辑的自定义导出模板,都会触发该报错,而俄罗斯方块项目没有对应配置所以运行正常。
- 浏览器缓存残留:若此前曾开启过浏览器的移动端模拟模式访问该站点,残留的UA模拟缓存、站点缓存也可能触发该错误判定。
解决方案
- 直接强制禁用移动端检测:最高效的修复方案,找到导出后的WebGL包的加载入口代码,在Unity实例初始化前添加覆盖逻辑:
旧版UnityLoader加载模式添加代码:UnityLoader.SystemInfo.mobile = false;
新版createUnityInstance加载模式添加代码:navigator.userAgent = navigator.userAgent.replace(/Mobile|Android|iPhone|iPad|Touch/i, ''); - 对齐两个项目的构建设置:对比井字棋和俄罗斯方块的Player Settings配置,重点检查WebGL分类下的Other Settings页,确保两者的图形API列表、渲染路径、输入系统配置完全一致,移除井字棋项目中不必要的移动端输入设备、移动端渲染兼容选项。
- 替换导出模板为默认模板:若井字棋使用了自定义WebGL导出模板,直接切换为Unity默认的导出模板后重新构建打包,避免自定义模板中夹带多余的移动端检测代码。
- 清除站点缓存后重新访问:按下
Ctrl+Shift+R强制刷新页面,或到浏览器站点设置中清除该站点的所有缓存、Cookie、服务工作线程数据后再测试。
内容的提问来源于stack exchange,提问作者Mr Spoony
相关产品推荐
相关产品推荐

