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

如何在Godot中通过GDScript访问在线数据库?

可以通过Godot的HTTP请求配合后端接口实现在线数据库访问

直接让Godot连接在线数据库(比如MySQL)并不推荐——会暴露数据库凭证,极易被恶意攻击篡改数据。正确的做法是搭建一个后端接口层,Godot通过HTTP请求与接口通信,由接口负责和数据库交互。

具体实现步骤

1. 搭建后端接口

你提到的phpMyAdmin是MySQL的管理工具,并非后端服务。你可以用PHP、Node.js、Python等语言写简单的接口,处理用户数据的增、删、改、查请求,返回JSON格式的响应。

举个简单的PHP接口示例(假设用MySQL数据库):

<?php
// 数据库连接信息
$host = "你的数据库地址";
$dbname = "数据库名";
$username = "数据库用户名";
$password = "数据库密码";

// 建立连接
$conn = new mysqli($host, $username, $password, $dbname);
if ($conn->connect_error) {
    die(json_encode(["status" => "error", "message" => "数据库连接失败"]));
}

// 处理获取用户数据的请求
if ($_SERVER["REQUEST_METHOD"] === "GET") {
    $userId = $_GET["user_id"];
    // 防SQL注入,使用预处理语句
    $stmt = $conn->prepare("SELECT * FROM users WHERE id = ?");
    $stmt->bind_param("i", $userId);
    $stmt->execute();
    $result = $stmt->get_result();
    $user = $result->fetch_assoc();
    
    echo json_encode(["status" => "success", "data" => $user]);
    $stmt->close();
}

// 处理保存用户数据的请求
if ($_SERVER["REQUEST_METHOD"] === "POST") {
    $userData = json_decode(file_get_contents("php://input"), true);
    $userId = $userData["id"];
    $username = $userData["username"];
    $score = $userData["score"];
    
    $stmt = $conn->prepare("REPLACE INTO users (id, username, score) VALUES (?, ?, ?)");
    $stmt->bind_param("isi", $userId, $username, $score);
    $stmt->execute();
    
    echo json_encode(["status" => "success", "message" => "数据保存成功"]);
    $stmt->close();
}

$conn->close();
?>

2. Godot端的GDScript实现

在Godot中使用HTTPRequest节点发送请求,处理后端返回的JSON数据:

获取用户数据示例

extends Node

var http_request: HTTPRequest

func _ready():
    http_request = HTTPRequest.new()
    add_child(http_request)
    http_request.connect("request_completed", self, "_on_request_completed")
    
    # 发送GET请求获取用户数据
    var url = "https://你的后端域名/get_user.php?user_id=123"
    var error = http_request.request(url)
    if error != OK:
        print("请求发送失败: ", error)

func _on_request_completed(result: int, response_code: int, headers: PackedStringArray, body: PackedByteArray):
    if response_code == 200:
        var response_text = body.get_string_from_utf8()
        var data = JSON.parse_string(response_text)
        if data["status"] == "success":
            print("用户数据: ", data["data"])
        else:
            print("请求错误: ", data["message"])
    else:
        print("请求失败,状态码: ", response_code)

保存用户数据示例

func save_user_data(user_id: int, username: String, score: int):
    var url = "https://你的后端域名/save_user.php"
    var user_data = {
        "id": user_id,
        "username": username,
        "score": score
    }
    var json_body = JSON.stringify(user_data)
    
    var headers = ["Content-Type: application/json"]
    var error = http_request.request(url, headers, true, HTTPClient.METHOD_POST, json_body)
    if error != OK:
        print("保存请求发送失败: ", error)

关键注意事项

  • 安全优先:必须使用HTTPS传输数据,避免明文泄露;后端接口要做参数验证、防SQL注入(用预处理语句),还要对用户请求做身份校验(比如用Token)。
  • 异步处理:Godot的HTTP请求是异步的,务必通过request_completed信号处理响应,不要阻塞主线程。
  • 错误处理:要处理请求失败、响应码异常、JSON解析失败等情况,保证程序健壮性。

内容的提问来源于stack exchange,提问作者Ben Jarvis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 19:13:23