好品质高端网站设计,关键字排名优化工具,18款黄台禁用免费软件app,济南网站制作哪家最好HTTP分数排行榜 介绍一、创建数据库二、创建PHP脚本三、上传下载分数四、测试 介绍
Unity中向服务器发送用户名和得分#xff0c;并存入数据库#xff0c;再讲数据库中的得分按照降序的方式下载到Unity中。
一、创建数据库
首先#xff0c;我们要在MySQL数据库中建立一个… HTTP分数排行榜 介绍一、创建数据库二、创建PHP脚本三、上传下载分数四、测试 介绍
Unity中向服务器发送用户名和得分并存入数据库再讲数据库中的得分按照降序的方式下载到Unity中。
一、创建数据库
首先我们要在MySQL数据库中建立一个简单的数据库用来保存用户名和得分使用MySQL提供的MySQL Workbench工具只需要几个步骤即可完成这个工作。
1.确定完整安装了MySQL启动MySQL Workbench我这里用的8.0版本它是一个图形化的数据库工具软件。2.在菜单栏中点击号创建一个数据库模型并命名myscoresdb如下图 3.进入如下界面打开刚才创建的数据库模型并找到Tables右键创建一个高分表
二、创建PHP脚本
这里需要创建两个php脚本一个用来上传用户名和分数另一个用来下载分数并将其排序发送给Unity。
1.创建UploadScore.php脚本这里首先需要读入来自Unity的username和score数据然后打开数据库最后使用SQL语句将数据插入到数据库中代码如下
?php
//UploadScore.php
require_once (PHPStream.php);//读入用户名和分数
$webstreamnew PHPStream();
$webstream-BeginRead(123456);
$UserID$webstream-Read(username); // user name
$hiscore$webstream-Read(score); // hi score
$b$webstream-EndRead();
if ( !$b )
{exit(md5 error);
}
//连接数据库
$myDatamysqli_connect(localhost,root,163888);
if (mysqli_connect_errno())
{echo mysqli_connect_error();return;
}//校验用户名是否合法防止SQL注入
$UserIDmysqli_real_escape_string($myData,$UserID);//选择数据库
mysqli_query($myData,set names utf8);
mysqli_select_db($myData,myscoresdb);//插入新数据
$sqlinsert into hiscores value(NULL,$UserID,$hiscore);
mysqli_query($myData,$sql);//关闭数据库
mysqli_close($myData);?2.创建DownloadScores.php脚本我们将从数据库中查询分数最高的20个记录然后在一个循环语句中将用户名和分数发送给Unity代码如下
?php
require_once (PHPStream.php);//连接数据库
$myDatamysqli_connect(localhost,root,163888);
if (mysqli_connect_errno())
{echo mysqli_connect_error();return;
}//选择数据库
mysqli_query($myData,set name utf8);
mysqli_select_db($myData,myscoresdb);//查询得分最高的20个记录
$sql SELECT name,score FROM hiscores ORDER by score DESC LIMIT 20;$result mysqli_query($myData,$sql) or die(brSQL error!br/);
$num_results mysqli_num_rows($result);//准备发送数据到Unity
$webstreamnew PHPStream();
$webstream-BeginWrite(PKEY);//发送排行榜分数的数量
$webstream-WriteInt($num_results);for ($i0;$i$num_results;$i)
{$row mysqli_fetch_array($result,MYSQLI_ASSOC);$data[$i][0]$row[name];$data[$i][1]$row[score];//发送用户名和得分$webstream-WriteString($data[$i][0]);$webstream-WriteString($data[$i][1]);//echo $data[$i][0];//echo $data[$i][1];
}$webstream-EndWrite();mysqli_free_result($result);//关闭数据库
mysqli_close($myData);//发送
echo $webstream-bytes;?三、上传下载分数
在Unity中一个是将用户名和得分上传另一个是下载得分排名前20的用户名和得分实际上我们是用过Unity的WWW功能调用相应的PHP脚本更新数据库的内容并反馈到Unity中。如下图 1.创建空物体并命名Score新创建一个ScoreScript脚本挂在到Score空物体上 2.打开ScoreScript脚本定义属性 public const string UploadScoreUrl http://192.168.1.5:8088/UploadScore.php;public const string DownloadScoresUrl http://192.168.1.5:8088/DownloadScores.php;private string[] m_hiscores;3.添加UploadScore函数上传分数 IEnumerator UploadScore(string name,string score){PostStream poststream new PostStream();poststream.BeginWrite(true);poststream.Write(username,name);poststream.Write(score,score);poststream.EndWrite();WWW www new WWW(UploadScoreUrl,poststream.BYTES,poststream.Headers);yield return www;if (www.error ! null){Debug.LogError(www.error: www.error);}else{Debug.LogError(www.text: www.text);}}4.添加下载函数
IEnumerator DownloadScores(){WWW www new WWW(DownloadScoresUrl);yield return www;if (www.error ! null){Debug.LogError(www.error: www.error);}else{int count 0;PostStream poststream new PostStream();poststream.BeginRead(www,true);poststream.ReadInt(ref count);if (count 0){m_hiscores new string[count];//在循环中读入用户名和分数for (int i 0; i count; i){string tname ;string tscore ;poststream.ReadString(ref tname);poststream.ReadString(ref tscore);m_hiscores[i] tname : tscore;Debug.LogError(m_hiscores[i]);}bool ok poststream.EndRead();if (!ok) Debug.LogError(MD5 error);}}}5.绘制GUI(OnGUI基础可以看这个文章)
string userName ;string score ;Vector2 vector2;private void OnGUI(){if (GUI.Button(new Rect(10, 110, 150, 30), 上传)){StartCoroutine(UploadScore(userName,score));score ;userName ;}if (GUI.Button(new Rect(10, 140, 150, 30), 下载)){StartCoroutine(DownloadScores());}//GUI.color Color.blue;GUI.Label(new Rect(10, 10, 100, 50), 用户名:);GUI.Label(new Rect(10, 50, 100, 50), 密 码:);userName GUI.TextField(new Rect(80, 10, 100, 30), userName);score GUI.PasswordField(new Rect(80, 50, 100, 30), score,*);//开始滚动视图vector2 GUI.BeginScrollView(new Rect(180, 0, 500, 500), vector2, new Rect(0, 0, 500, 500), true, true);if (m_hiscores ! null){for (int i 0; i 20; i){if (i m_hiscores.Length) GUI.Button(new Rect(0, 25 * i, 500, 20), m_hiscores[i]);else GUI.Button(new Rect(0, 25 * i, 500, 20),);}}GUI.EndScrollView(); }四、测试