用Unity利用PHP连接MySQL数据库

2015年03月15日 18:23 0 点赞 0 评论 更新于 2025-11-21 17:15

很多同学都表示需要了解Unity与数据库相关的知识,恰好我在这方面有所涉猎,相关知识是从Unity官网论坛上学到的。在Unity中输入字符并提交到MySQL数据库的操作相对简单,下面我就抛砖引玉,和大家分享一下具体方法。

所需工具

本文使用的工具组合为Unity + WampServer。

操作步骤

1. 建立数据库

首先,在phpMyAdmin端建立一个数据库,我将其命名为wayneyi。需要注意的是,个人使用的端口可能不同,由于我安装了IIS,所以将端口改为了8080。

2. 编写PHP代码

以下是addscore.php文件的源代码:

<?php
// 连接到MySQL数据库
$db = mysql_connect("localhost", "root", "") or die('Cannot connect :' . mysql_error());
// 选择要使用的数据库
mysql_select_db('wayneyi') or die('Cannot connect into database');
// 对从GET请求中获取的name参数进行转义处理,防止SQL注入
$name = mysql_real_escape_string($_GET['name'], $db);
// 对从GET请求中获取的score参数进行转义处理,防止SQL注入
$score = mysql_real_escape_string($_GET['score'], $db);
// 构建插入数据的SQL语句
$sql = "insert into scores values (null, '$name', '$score');";
// 执行SQL语句
$result = mysql_query($sql) or die('Query failed; '. mysql_error());
?>

注意mysql_*系列函数在PHP 5.5.0起已被废弃,在PHP 7.0.0起被移除,建议使用mysqli_*PDO来替代。

将上述PHP文件放入WampServer的www文件目录下。

3. 编写C#代码

以下是Unity中使用的C#代码:

using UnityEngine;
using System.Collections;

public class Downcsharp : MonoBehaviour {
// 定义PHP文件的URL
public string strurl = "http://localhost:8080/addscore.php?";
// 存储输入的名称
static string name = "";
// 定义分数
int fenshu = 21;

void OnGUI() {
// 创建一个文本输入框,用于输入名称
name = GUI.TextField(new Rect(40, 40, 100, 40), name, 25);
// 创建一个提交按钮
if (GUI.Button(new Rect(40, 100, 100, 40), "Submit")) {
// 点击按钮时,启动协程发送数据
StartCoroutine(test(name, fenshu));
}
}

IEnumerator test(string name, int id) {
// 构建请求的URL
string hc = strurl + "name=" + WWW.EscapeURL(name) + "&score=" + id;
// 创建一个WWW对象,用于发送HTTP请求
WWW hspost = new WWW(hc);
// 等待请求完成
yield return hspost;
// 检查请求是否出错
if (hspost.error != null) {
print("error with: " + hspost.error);
}
}
}

将上述C#脚本附加到Unity场景中的相机上。

4. 测试

运行Unity项目,在文本框中输入XXX,点击“Submit”按钮,就会向数据库中插入name=xxxscore=21的一行数据。

拓展内容

这里只是一个简单的示例,国外有利用MD5加密实现登陆注册功能的案例。由于我的注册功能还未完成,所以暂时不分享相关代码了。另外,现在很多开发者使用SF(SmartFoxServer)或者Photon做服务器,我目前还处于研究阶段,后续会继续深入学习。

作者信息

boke

boke

共发布了 3994 篇文章