【Unity】简单的分数排行榜功能实现(Web数据库)

這篇文章中有使用到的工具有:
XAMPP:建立排行榜所需資料庫
NetBeans:撰寫 PHP 表單部分
Unity:撰寫客戶端發送請求

教學中所使用的 Username 為 root
是 MySQL 中預設的使用者帳號,也是權限最高的帳號
因為撰寫教學所以在這裡直接使用 root
建議實際撰寫時使用另外建立的使用者帳號
防止被駭客攻擊

先使用 MySQL 建立資料庫及資料表
mysql -u root
create database highscore;
use highscore;
create table ranking (
id int(10) auto_increment primary key,
name varchar(15),
score int(10)
);
【Unity】简单的分数排行榜功能实现(Web数据库)_第1张图片

資料庫及資料表建立完成後
可至 http://localhost/phpmyadmin 查看資料表是否建立成功
【Unity】简单的分数排行榜功能实现(Web数据库)_第2张图片

分數上傳
接下來開啟 NetBeans 撰寫分數上傳部分
建立一個新專案並命名為 Unity
新增一個 RankingUpdate.php 腳本
【Unity】简单的分数排行榜功能实现(Web数据库)_第3张图片

回到 Unity 建立 UI.cs 腳本

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class UI : MonoBehaviour
{
	public string path = "http://localhost/Unity/RandingUpdate.php";
	public string downloadPath = "http://localhost/Unity/RankingDownload.php";

	public string name;
	public string score;

	void OnGUI()
	{
		name = GUILayout.TextField(name, 10);
		score = GUILayout.TextField(score, 10);

		if(GUILayout.Button("Update"))
		{
			StartCoroutine("ScoreUpdate");
		}
	}


	public IEnumerator ScoreUpdate()
	{		
		WWWForm form = new WWWForm();
		
		Dictionary data = new Dictionary();
		data.Add("name", name);
		data.Add("score", score);
		
		foreach(KeyValuePair post in data)
		{
			form.AddField( post.Key, post.Value );
		}
		
		WWW www = new WWW(path, form);
		
		yield return www;
		
		Debug.Log(www.text);
		
	}
}

 

開始後輸入名字及分數後按下 Update 按鈕
若成功則會在 Console 面板看到剛剛在 php 裡的提示
在 http://localhost/phpmyadmin 可查詢是否正確寫入資料
【Unity】简单的分数排行榜功能实现(Web数据库)_第4张图片

 

排行榜下載
在 NetBeans 中建立 RankingDownload.php 腳本
【Unity】简单的分数排行榜功能实现(Web数据库)_第5张图片

 

回到 Unity 更新 UI.cs 腳本

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class UI : MonoBehaviour
{
	public string path = "http://localhost/Unity/RandingUpdate.php";
	public string downloadPath = "http://localhost/Unity/RankingDownload.php";

	public string name;
	public string score;

	void OnGUI()
	{
		name = GUILayout.TextField(name, 10);
		score = GUILayout.TextField(score, 10);

		if(GUILayout.Button("Update"))
		{
			StartCoroutine("ScoreUpdate");
		}

		if(GUILayout.Button("Download"))
		{	
			StartCoroutine("ScoreDownload");	
		}
	}


	public IEnumerator ScoreUpdate()
	{		
		WWWForm form = new WWWForm();
		
		Dictionary data = new Dictionary();
		data.Add("name", name);
		data.Add("score", score);
		
		foreach(KeyValuePair post in data)
		{
			form.AddField( post.Key, post.Value );
		}
		
		WWW www = new WWW(path, form);
		
		yield return www;
		
		Debug.Log(www.text);
		
	}

	public IEnumerator ScoreDownload()
	{
		WWWForm form = new WWWForm();
		
		Dictionary data = new Dictionary();
		data.Add("download", "1");
		
		foreach(KeyValuePair post in data)
		{
			form.AddField( post.Key, post.Value );
		}
		
		WWW www = new WWW(downloadPath, form);
		
		yield return www;
		
		Debug.Log(www.text);
	}
}

接下來在遊戲中按下 Download 按鈕
就可以接收到由資料庫所傳回的訊息

由於這裡回傳的資料沒有另外經過處理
所以格式看起來不是很好
不過還是可以看到回傳的順序為
TED,1003
TED,1000

這樣建立排行榜的概念就算完成了

你可能感兴趣的:(Unity)