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

如何将Unity WebGL构建产物上传至个人Node.js Web应用

Unity WebGL 产物部署到 Node.js 应用并实现数据库交互方案

1. 部署Unity WebGL构建产物到Node.js服务

  • 先处理Unity侧构建配置:构建WebGL时,压缩方式建议选gzip/Brotli,如果不想额外配置Node.js压缩规则可直接选禁用,可避免MIME类型加载报错。构建完成后会得到包含index.html、Build/、TemplateData/的完整文件夹。
  • 配置Node.js静态资源托管规则,以常用的Express框架为例:将Unity构建的完整文件夹放到Node.js项目的静态资源目录(比如默认的public/)下,在服务入口文件添加如下配置:
const express = require('express');
const app = express();

// 托管Unity WebGL静态资源,此处假设构建产物放在public/unity-game目录下
app.use('/unity-game', express.static('public/unity-game'));

// 配置WebGL专属MIME类型,避免资源加载报错
app.use((req, res, next) => {
  if (req.path.endsWith('.unityweb')) {
    res.setHeader('Content-Type', 'application/octet-stream');
  } else if (req.path.endsWith('.wasm')) {
    res.setHeader('Content-Type', 'application/wasm');
  }
  next();
});

app.listen(3000, () => console.log('服务运行在3000端口'));
  • 部署完成后访问http://你的服务地址/unity-game即可直接启动游戏。

2. 实现WebGL游戏与Node.js、数据库交互

  • Unity侧封装接口请求逻辑:在C#脚本中使用UnityWebRequest调用Node.js提供的业务接口,示例代码如下:
IEnumerator GetUserGameData(string userId) {
  string requestUrl = "http://你的服务地址/api/game-data/" + userId;
  using (UnityWebRequest req = UnityWebRequest.Get(requestUrl)) {
    yield return req.SendWebRequest();
    if (req.result == UnityWebRequest.Result.Success) {
      // 直接解析后端返回的JSON数据即可使用
      string responseText = req.downloadHandler.text;
      Debug.Log(responseText);
    }
  }
}

注意:如果WebGL页面和Node.js接口的域名/端口不一致,需要在Node.js侧配置CORS跨域规则,否则请求会被浏览器拦截。

  • Node.js侧编写业务接口操作数据库,以Express+MySQL为例:
const mysql = require('mysql2');
// 初始化数据库连接
const db = mysql.createConnection({
  host: 'localhost',
  user: '数据库用户名',
  password: '数据库密码',
  database: '业务库名'
});

// 提供游戏侧调用的查询接口
app.get('/api/game-data/:userId', (req, res) => {
  const userId = req.params.userId;
  db.query('SELECT * FROM game_data WHERE user_id = ?', [userId], (err, results) => {
    if (err) return res.status(500).json({error: err.message});
    res.json(results[0]);
  });
});
  • 如果需要实现实时交互逻辑,可在Node.js侧引入ws或socket.io库搭建WebSocket服务,Unity侧接入对应WebSocket客户端SDK即可实现双向通信。

3. 常见问题规避

  • Unity构建WebGL前需要在Player Settings > Other Settings中将Active Input Handling设置为Input System Package (New)或两者兼容模式,避免输入逻辑在网页端失效。
  • 禁止在Unity C#代码中直接编写数据库连接逻辑,所有数据库操作必须通过Node.js接口转发,避免数据库账号密码直接泄露到前端。

内容的提问来源于stack exchange,提问作者sagesy 01

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:24:06