Unity的WebGL至今存在许多如视频无法播放,数据库难以连接等多种问题,此处记录Unity的数据库连接问题,并附上实现代码,代码一共分为两个部分,一部分为php代码,用于部署在服务器端直接连接数据库,作为Unity和数据库中间的桥梁,协助数据交换;另一部分则为C#代码,在Unity项目当中,与服务器上的php文件进行连接上传和获取数据。
php部分
需要注意的是,php7.0以上已经停用mysql_connect,而是改用mysqli_connect,后面多了一个i,其他mysql函数也有类似的变化。同时一些函数的参数个数,参数位置也都有发生变化。此处采用的为较新版本的php。
die("error");
}
//改成你自己的数据库名称
$result = mysqli_select_db($conn,"stu_data");
if(!$result)
{
mysqli_close($conn);
die("error");
}
$sql = "set names utf8";
//运行
mysqli_query($conn,$sql);
//写入数据库
$sql = "insert into stu_data(stu_name,stu_id,time,score) values('".$uname."','".$upass."','".$utime."',".$uscore.")";
//运行
$rs=mysqli_query($conn,$sql);
if(!$rs)
{
mysqli_close($conn);
die("error");
}
else
{
echo "success";
}
//关闭数据库
mysqli_close($conn);
?>
在写完php文件之后,只需要把该php文件上传到服务器中,并获得该php文件的访问地址,如
"http://www.xxxxxx.xyz/xxxx.php"
之后会在Unity C#部分用到。
Unity C#部分
using MySql.Data.MySqlClient;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
public class ResultController : MonoBehaviour
{
private string Url = "http://www.xxxxxx.xyz/xxxx.php";
void Start()
{
//--------------------建立连接语句——针对WebGL的情况-----------------------
WWWForm form = new WWWForm();
form.AddField("stu_name", "zff");
form.AddField("stu_id", "123456");
form.AddField("time", "01:01");
form.AddField("score", 222);
StartCoroutine(SendPost(Url, form));
}
IEnumerator SendPost(string url, WWWForm wForm)
{
UnityWebRequest www = UnityWebRequest.Post(Url, wForm);//新版的Unity已经摒弃了WWW,而改用UnityWebRequest
yield return www.SendWebRequest();
if (www.result==UnityWebRequest.Result.ConnectionError||www.result==UnityWebRequest.Result.ProtocolError)
{
Debug.Log(www.error);
}
else
{
Debug.Log("发送成功");
}
}
}
这里的变量,所传的值就可以根据自己的需要自由修改和传送了,在哪个生命周期执行也可以自行调整,只是注意两个地方,一个是using MySql.Data.MySqlClient; 需要自己去下载对应的包,详细操作和资源可以自行搜索;另一个是form.Addfield那里的名称要和php文件中的对应起来。


![[Unity-经验]Unity WebGL连接数据库(服务器部署php文件+C#连接php上传数据) [Unity-经验]Unity WebGL连接数据库(服务器部署php文件+C#连接php上传数据)](http://www.mshxw.com/aiimages/31/898974.png)
