Unity C# โหลดและแสดง JSON Data ติดฐานข้อมูล PHP & MySQL

Unity C# โหลดและแสดง JSON Data ติดฐานข้อมูล PHP & MySQL

1. ผมเทสโดยออกแบบฐานข้อมูลง่าย ๆ นะครับมีแค่ 2 field คือ id,name ตามรูปครับ

unity-c#-php-mysql-connect-1

2. สร้างไฟล์ connect.php สำหรับติดต่อฐานข้อมูล

<?php

define("db_server", "localhost");  
define("db_username", "root");
define("db_password", "root");
define("db_name", "dbname");  
	
$conn = mysql_connect(db_server,db_username,db_password);
mysql_select_db(db_name, $conn);
mysql_query('SET NAMES UTF8');

?>

3. สร้างไฟล์ saveload.php สำหรับรับค่าจาก C# และบันทึกลงฐานข้อมูล พร้อมกับ return json data กลับไป

<?php

require_once("connect.php");

$name = $_REQUEST['name'];

if($name != ""){
	$sql = "INSERT INTO member SET name='$name'";
	$result = mysql_query($sql);
}
$sql = "SELECT*FROM member";
$result = mysql_query($sql);

$data = array();
while ($row = mysql_fetch_assoc($result)) {
    $r = array(
        'id' => $row['id'],
        'name' => $row['name']
    );
	array_push($data,$r);
}
echo json_encode($data);

?>

4. เปิดโปรแกรม unity ขึ้นมา ทดลองสร้าง InputField และ Button ให้มีหน้าตาประมาณนี้ ส่วนนี้ ตามใจท่านผู้ชมครับ

unity-c#-php-mysql-connect-3

5. คลิกขวาที่หน้าต่าง Hierarchy เลือก Create Empty เราจะได้ GameObject มาให้ตั้งชื่อใหม่ว่า AppController สำหรับ GameObject ตัวนี้จะเป็นวัตถุเปล่า ๆ นะครับ เอาไว้ใส่ C# Script ที่เราจะเขียนเพิ่มภายหลัง

unity-c#-php-mysql-connect-4

6. เสร็จแล้วให้ทำการเพิ่ม C# script ไปที่ AppController กดไปที่ Inspector->Add Component->New script ตั้งชื่อว่า AppController กดปุ่ม Create And Add

unity-c#-php-mysql-connect-5

7. ให้สังเกตุที่ส่วนของแทบ project เราจะได้ไฟล์ AppControler.cs มาให้ดับเบิ้ลคลิก
ระบบจะเปิดโปรแกรม MonoDevelop ขึ้นมาครับ
และก่อนที่เราจะไปเขียนโค๊ดที่ไฟล์นี้ ให้ไปโหลด LitJson มาไว้ใน assets ก่อนครับ
โหลดที่ https://lbv.github.io/litjson/

unity-c#-php-mysql-connect-6

8. ใน AppController.cs ให้เราสร้างตัวแปรแบบ public ขึ้นมา เพื่อเชื่อมโยงกับ InputField และ Button ที่เราสร้างไว้ก่อนหน้านี้

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using LitJson; // import json เข้ามารอไว้เลย

public class AppController : MonoBehaviour {

	public Button btnSubmit;
	public InputField txtName;
}

9. ในหน้าต่าง hierarchy เลือก AppController แล้วทำการเชื่อมโยง โดยการลาก Button และ InputField ไปแทนค่าตัวแปรที่เราเขียนไว้คือ btnSubmit และ txtName

unity-c#-php-mysql-connect-7

10. เปิดไฟล์ AppController.cs ขึ้นมาครับ แล้วเขียนโค๊ด เพิ่มขึ้นมาประมาณนี้ครับ

private JsonData userData;

	void Start () {
		btnSubmit.onClick.AddListener (delegate {
			Debug.Log("click !");
			StartCoroutine(submitMyName());
		});
	}

	IEnumerator submitMyName () {
		if (txtName.text.Length <= 0) {
			Debug.Log ("please enter name");
			return false;
		}
		Debug.Log("submit !");
		WWWForm form = new WWWForm();
		form.AddField("name",txtName.text);

		WWW www = new WWW("http://localhost:8888/saveload.php", form);
		yield return www;

		userData = JsonMapper.ToObject(www.text);

		int maxUser = userData.Count;
		for(int i=0;i<maxUser;i++)
		{
			Debug.Log(userData[i]["name"]);
		}
		StopCoroutine (submitMyName());
	}

11. ลองกดปุ่ม play ทดสอบดูครับ จะเห็นข้อมูลที่เรากรอกไปทุก ๆ ครั้ง ถูกบันทึกและรีเทินค่ากลับมาที่หน้าต่าง Console ที่เหลือก็สุดแล้วแต่จะเอาข้อมูลไปทำอะไรครับ

unity-c#-php-mysql-connect-8

Leave a Reply