You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity WebGL游戏嵌入Next.js网站无法加载问题求助

Unity WebGL部署到Next.js + Cloudflare无法加载的问题解决

问题情况

我把Unity导出的WebGL游戏文件放到Next.js项目的public文件夹里,用iframe嵌入网站供用户游玩,网站由Cloudflare托管,但游戏一直加载失败。试过清除缓存、重新构建Unity项目都没用。

后来修复了文件结构,又出现新错误:

Refused to execute script from 'https://www.cardcounter21.com/Game/Build/Game.framework.js.br' because its MIME type ('application/octet-stream') is not executable, and strict MIME type checking is enabled.

解决步骤

1. 修正Cloudflare的MIME类型配置

Cloudflare默认没正确识别Unity WebGL压缩文件(.br、.gz)的MIME类型,得手动配置:

  • 登录Cloudflare控制台,进入你的域名管理页
  • 转到规则→转换规则→修改响应头
  • 创建新规则,针对对应后缀的文件设置正确的Content-Type:
    • .js.br:设置为application/javascript
    • .wasm.br:设置为application/wasm
    • .data.br:设置为application/octet-stream
  • 也可以用页面规则,针对/Game/Build/*.br路径统一配置MIME类型

2. 配置Next.js静态文件响应头(可选但推荐)

在Next.js项目的next.config.js里添加静态文件头配置,确保Next.js发送正确的MIME类型:

/** @type {import('next').NextConfig} */
const nextConfig = {
  async headers() {
    return [
      {
        source: '/Game/Build/(.*)',
        headers: [
          {
            key: 'Content-Type',
            value: ({ params }) => {
              const ext = params[0].split('.').pop();
              if (ext === 'js.br') return 'application/javascript';
              if (ext === 'wasm.br') return 'application/wasm';
              if (ext === 'data.br') return 'application/octet-stream';
              return '';
            },
          },
        ],
      },
    ];
  },
};

module.exports = nextConfig;

3. 检查Unity WebGL构建设置

  • 确认Unity构建时的压缩格式和输出文件匹配(比如选Brotli就对应.br文件),且所有构建文件完整无缺失
  • 检查构建生成的index.html里的资源路径是否正确,因为放在Next.js的public文件夹中,路径要和网站的访问路径对应

4. 验证iframe嵌入路径

确保iframe的src路径正确,比如游戏文件在public/Game/index.html,那么iframe代码应该是:

<iframe src="/Game/index.html" width="800" height="600" frameborder="0"></iframe>

内容的提问来源于stack exchange,提问作者Arthur Kaza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 18:02:34