Halo semuanya? Apa kabar? Sesuai janji saya di postingan yang lalu, kali ini saya akan membuat sebuah tutorial sederhana soal cara ngegabungin antara Unity, PHP dan MySQL. Atau istilahnya adalah Fusion. Keren kan? Itu artinya game anda bisa nyimpen highscore di database, anda juga bisa... err... nyimpen highscore di database, terus... hmm.. yah , nyimpen highscore di database, hehehe, ah pokoknya mah kalau game anda udah konek ke database ada banyak banget lah yang bisa anda lakuin. Mudah-mudahan sih gitu.
<?php
$host = "localhost";
$user = "root";
$pass = "";
$database = "db_kikysikancil";
$table = "tb_unity";
$connect = mysql_connect($host, $user, $pass);
$valid = mysql_select_db($database);
if ($connect && $valid){
if ($_GET['read'] == 1){
$sql = "SELECT * FROM $table";
$result = mysql_query($sql);
$row = mysql_fetch_row($result);
echo $row[1];
}
if (isset($_GET['var1'])){
$sql = "UPDATE $table SET Data = '".$_GET['var1']."' WHERE ID = 1";
$result = mysql_query($sql);
if ($result) { echo "Updated: ".$_GET['var1']; }
else { echo "Fail!"; }
}
}
?>
Habis itu bikin project baru deh di Unity. Buat yang ga bisa bikin project baru di Unity baca dulu postingan saya yang dulu-dulu gih: Unity Create New Project. Nah, habis itu bikin script C#. Sebenernya bikin 1 script juga udah cukup, tapi sengaja saya pisahin jadi 2 supaya agan-agan bisa ngerti, mana script buat BACA dan mana script buat NULIS. Intinya itu2 aja sih. ReadFromMySQL dan satunya lagi WriteToMySQL. Caranya bikin script itu tinggal klik kanan doang di panel Asset -> Create -> C# Script. Jangan lupa kasih nama!
Berdasarkan pengalaman, ada banyak banget pembaca blog ini yang pusing 17 keliling gara2 script salah nama jadi error. Padahal garing banget tuh errornya, wkwkwkw. Nah, agar kesalahan itu tidak berulang, saya pernah juga bikin post tentang itu, nggak ada salahnya dibaca buat pengingat: Unity Cant Add Script
Untuk script ReadFromMySQL agan ketik script berikut:
using UnityEngine;
using System.Collections;
public class ReadFromMySQL : MonoBehaviour {
WWW php_data;
public string URL;
string vText;
// Use this for initialization
void Start () {
vText = "";
}
// Update is called once per frame
void Update () {
}
IEnumerator GetPHPData () {
string param = URL + "?read=1";
php_data = new WWW(param);
yield return php_data;
vText = php_data.text;
}
void OnGUI () {
GUI.Label(new Rect(10,150,500,100), "Data: " + vText);
if (GUI.Button(new Rect(10, 180, 100, 30), "Load")){
StartCoroutine(GetPHPData());
}
}
}
Kalau untuk script WriteToMySQL agan ketik script berikut:
using UnityEngine;
using System.Collections;
public class WriteToMySQL : MonoBehaviour {
WWW php_data;
public string URL;
string vText = "";
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
IEnumerator SetPHPData (string value1) {
string param = URL + "?var1="+value1;
php_data = new WWW(param);
yield return php_data;
Debug.Log(php_data.text);
}
void OnGUI () {
GUI.Label(new Rect(10,0,100,30), "Write");
vText = GUI.TextField(new Rect(10,30,300,30), vText, 50);
if (GUI.Button(new Rect(10, 65, 100, 30), "Save")){
StartCoroutine(SetPHPData(vText));
}
}
}
Habis itu pasang deh ke Main Camera dan atur kayak begini di bagian parameter URL nya. Isi URL nya teh disesuaikan dengan nama file agan-agan kalau make XAMPP. Da saya mah pakenya di localhost atuh, jadi weh gitu setingnya. Kalao agan-agan mah ya, sok weh lah, atur-atur oceh?
Kalau udah semuanya dan nggak error, tinggal run aja langsung. Tahapa pertama, agan klik dulu tombol LOAD. Mestinya bakalan muncul data yang tadi dimasukin dari PHPMyAdmin.
Data "AAA" teh yang tadi kita masukin lewat PHPMyAdmin. Inget? Baca lagi dari atas kalau lupa.
Nah, habis itu ketik sesuatu deh di kotak Write. Misalnya, "BBB" terus klik SAVE. Nggak terjadi apa-apa memang. Tapi coba deh klik LOAD lagi. Apa yang terjadi?
Yup, pada saat klik LOAD data yang ditampilkan sudah berubah dari yang tadinya "AAA" kini berubah jadi "BBB". Ini artinya update ke tabel MySQL udah berhasil. Nggak percaya? Coba aja agan buka lagi PhpMyAdmin dan refresh tabel yang tadi.
Nilainya memang sudah berubah kan? Itu teh di Update dari Unity loh, keren kan? Ah, Unity mah emang canggih gih gih! Pertanyaan lanjutannya adalah, gimana kalau bikin login Scene? Maksudnya, si game teh baru bisa main kalau udah login dulu ke sebuah database? Idenya sama persis dengan ini, ya tinggal read, ya tinggal write, ya tinggal ngoding. Saya yakin, agan-agan pasti bisa! Cemungud!
Tapi khusus buat para pembaca setia blog kancil ini, saya akan coba bahas mengenai login Scene di postingan selanjutnya. *ciee... ciee... yang pada setia sama si kancil, ciee.. ciee... " Untuk sekarang, sekian dulu tutorialnya. Tunduh euy.
Itu ada son gohan segala.! Gokil bgt min. Haha. Tpi materinya gurih pisan ey. Doank singkong rebus. Hehe. Tanks min. Lanjutkan ke tutor gratis lainnya.
ReplyDeleteHatur nuhun sudah mampir di blog :)
ReplyDeletemau nanya ni gan, trus kalau mau di publish ke game mobile database sqlnya ngikut gak gan.?? tlong dibalas
ReplyDeleteTrimakasih :D
ane nyimpen databasenya di cpanel gan. aksesnya secara online berhasil :D
Deleteterimakasih infonya gan..
Deletemembantu sekali buat tugas akhirku... :D
Databasenya mah simpen aja di host server (sewa atau kalo ada yang gratisan juga bisa), jadi nanti dari aplikasi mobile di konekin ke servernya sehingga aplikasi/game itu cuma bisa jalan kalao ada koneksi internet + nyambung ke server kita (yang ada databasenya)
ReplyDeletemas, ane uda ikutin tutor login sama fusion mas ini. work !!! :D
ReplyDeletetrus mas, ane mau menampilkan data berdasarkan id login gimana ya mas?
kalau ini cuman menampilkan isi tabel baris pertama saja.
mohon bantuannya mas
Itu kayaknya tinggal di modif bagian sqlnya, misal: $sql = "SELECT * FROM $table" WHERE bla-bla = bla-bla"
Deleteklw un2k hosting db nya gimana kak?
ReplyDeletehosting dbnya bisa pake yang bayar atau gratisan, nanti kalo udah masuk di cpanelnya tinggal atur-atur aja di mysqlnya, database, table, dll
DeleteAPlikasi di ANdroid dan Databsenya di PC koneksi via wifi bisa gakmas? caranya bagaimana ?
ReplyDeleteKayaknya itu nyaris sama dengan tutorial ini deh, bedanya paling di nama URL (kasih URL ke PC nya) sama seting tethering di gadget androidnya (barangkali, ini juga jawabnya sok tahu kok, hehehe)
Deletemau tanya nih, konekin unity ke ms sql step by step nya gimana ya?
ReplyDeleteMS SQL? Microsoft SQL Server maksudnya? Waduh, nanyanya jangan yang susah-susah dong mas, belum nyampe ke situ ilmu saya. Masih cupu bingit nih.
Deletedatabasenya bisa di akses via smartphone??
ReplyDeletesy coba ini muncul error kenapa ya? solusinya om
ReplyDeleteYou are trying to load data from a www stream which has not completed the download yet.
You need to yield the download or wait until isDone returns true.
UnityEngine.WWW:get_text()
c__Iterator0:MoveNext() (at Assets/ReadFromMySQL.cs:18)
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
ndak jadi udah solve...thanks :)
Delete