Unity结合Flask实现排行榜功能

本文介绍如何将小游戏的本地排行榜功能迁移到服务器,通过Flask实现RESTful API,包括获取排行榜数据和添加新纪录。文章详细阐述了Flask应用的创建、数据库设计、HTTP交互以及Unity客户端的实现,同时提到了部署到SAE时遇到的跨域访问问题及其解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

业余做的小游戏,排行榜本来是用PlayerPrefs存储在本地,现在想将数据放在服务器上。因为功能很简单,就选择了小巧玲珑的Flask来实现。

闲话少叙。首先考虑URL的设计。排行榜无非是一堆分数score的集合,按照REST的思想,不妨将URL设为/scores。用GET获得排行榜数据,用POST添加一条新纪录到排行榜。此外,按照惯例,排行榜的数据不需要更新和删除。

Flask自身不支持REST,但我们可以通过routemethod自己实现。下面创建一个原型版本的rank_server.py。命名沿袭了Rails的习惯:

from flask import Flask

app = Flask(__name__)

@app.route('/scores', methods=['GET'])
def index():
     return 'index'

@app.route('/scores', methods=['POST'])
def create():
     return 'create'


if __name__ == '__main__':
     app.run(debug=True)

执行python rank_server.py来启动自带的服务器。下面我们安装cURL来测试应用。

brew install curl

测试GET

`curl -i -X GET 127.0.0.1:5000/scores`

测试POST

`curl -i -X POST 127.0.0.1:5000/scores`

-i参数可以展示响应的头部信息,便于debug。-X参数指定请求的方法method
可以看到测试成功。

下面我们建立存储数据的表。本地测试我们使用sqlite,之后部署使用mysql。
建表文件create_rank.sql内容如下:

DROP TABLE IF EXISTS rank;
CREATE TABLE rank(
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name VARCHAR(255) NOT NULL,
    score INTEGER NOT NULL
);

Mac自带sqlite。执行下面语句导入sql文件:

sqlite3 rank.db < create_rank.sql

然后随便插入几条测试数据。如:

INSERT INTO rank (name, score) VALUES ('A', 100);
INSERT INTO
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值