前言
恭喜你来到本系列终章!前五篇我们分别搞定了架构选型、MySQL建表、Unity驱动配置、CRUD封装和HTTP API搭建。本篇把它们全部串联,交付一个可运行的玩家管理系统Demo,涵盖注册登录、个人信息查看、背包管理、排行榜四个核心功能,并给出完整的部署上线清单。
一、系统架构总览
1 | ┌─────────────┐ HTTPS ┌──────────────────┐ TCP ┌─────────┐ |
二、API接口清单
| 方法 | 路径 | 鉴权 | 说明 |
|---|---|---|---|
| POST | /api/player/register | ❌ | 注册新账号 |
| POST | /api/player/login | ❌ | 登录获取JWT |
| GET | /api/player/:id | ✅ | 查看玩家信息 |
| PUT | /api/player/nickname | ✅ | 修改昵称 |
| GET | /api/player/items | ✅ | 获取背包列表 |
| POST | /api/player/items/use | ✅ | 使用物品 |
| GET | /api/leaderboard | ❌ | 金币排行榜Top50 |
| POST | /api/player/logout | ✅ | 登出(客户端清除Token) |
三、服务端补充代码
3.1 背包接口
1 | // src/models/itemModel.js |
💡 事务+行锁(FOR UPDATE) 保证并发安全。两个请求同时使用同一物品时不会出现负数库存。
3.2 修改昵称接口
1 | // Controller中新增 |
四、Unity客户端UI实现
4.1 登录面板
1 | // Assets/Scripts/UI/LoginPanel.cs |
4.2 排行榜面板
1 | // Assets/Scripts/UI/LeaderboardPanel.cs |
五、部署上线Checklist
5.1 服务端部署
| 步骤 | 命令/操作 | 验证方式 |
|---|---|---|
| 安装Node.js 20 LTS | curl -fsSL https://deb.nodesource.com/setup_20.x | sudo bash - && sudo apt install nodejs |
node -v |
| 安装依赖 | cd game-api && npm ci --production |
ls node_modules/mysql2 |
| 配置环境变量 | 创建 .env 文件,填入DB/JWT密钥 |
cat .env |
| PM2启动 | pm2 start src/app.js --name game-api -i max |
pm2 status |
| Nginx反向代理 | 配置upstream + proxy_pass | curl http://localhost/api/leaderboard |
| HTTPS证书 | certbot --nginx -d api.yourgame.com |
浏览器访问https |
| 防火墙 | ufw allow 80 && ufw allow 443 |
外网访问测试 |
| MySQL备份 | crontab每日mysqldump | 检查备份文件大小 |
5.2 Unity打包注意事项
| 检查项 | 说明 |
|---|---|
| API地址切换 | 开发用localhost:3000,发布用https://api.yourgame.com |
| IL2CPP link.xml | 保留Newtonsoft.Json/System.Net相关类型 |
| Android网络安全配置 | network_security_config.xml 允许HTTPS |
| iOS ATS | Info.plist中配置NSAppTransportSecurity |
| 超时设置 | UnityWebRequest.timeout = 10秒 |
| 重试机制 | 网络失败自动重试1次,间隔2秒 |
| Token刷新 | 401响应时跳转登录页 |
六、性能基线与监控
| 指标 | 目标值 | 监控工具 |
|---|---|---|
| API平均响应时间 | < 100ms | PM2 + Prometheus |
| P99响应时间 | < 500ms | Grafana |
| MySQL慢查询 | < 1s | slow_query_log |
| 连接池使用率 | < 80% | mysql2 pool events |
| 错误率 | < 0.1% | 日志聚合(ELK/Loki) |
| 服务器CPU | < 70% | htop / Cloud Monitor |
| 内存使用 | < 80% | free -m |
七、后续扩展方向
| 方向 | 技术选型 | 适用场景 |
|---|---|---|
| 缓存层 | Redis | 排行榜/会话/热点数据 |
| 消息队列 | RabbitMQ / Kafka | 异步任务/事件解耦 |
| 全文搜索 | Elasticsearch | 玩家搜索/聊天记录 |
| 实时通信 | WebSocket / Netcode | 对战/聊天/推送 |
| 数据分析 | ClickHouse / BigQuery | 埋点/留存/付费分析 |
| ORM升级 | FreeSql / Prisma | 减少手写SQL |
| 微服务拆分 | gRPC + K8s | DAU > 10万 |
八、全系列知识回顾
1 | Unity MySQL 小白教程·知识体系 |
总结
从”要不要用MySQL”到”完整项目上线”,六篇走完了一条从小白到实战的完整路径。记住三个核心认知:
- 生产环境永远走API中间层,客户端不碰数据库
- 安全是设计出来的不是补丁打出来的,参数化查询+JWT+HTTPS缺一不可
- 先跑通再优化,别在Hello World阶段就纠结百万并发
这个系列能教给你的技术是有限的,但希望你建立的安全意识和架构思维是无限的。
去造点什么吧。 🚀
系列导航
← 第5篇:HTTP API中间层实战
🏁 本篇为系列终章
说些什么吧!