Herkese merhaba bu yazıda Unity ile hostingimizdeki veritabanına erişip bilgi ekleyip geri sonuç döndereceğiz. Bu şekilde veritabanınıza oyun yapıyorsanız misal yüksek skorları kaydedebilirsiniz sürekli değişmesi gereken dinamik değişkenleriniz var ise yine uzaktan bunları değiştirebilirsiniz. Burada ekstra olarak veri ekleyip getirirken PHP’den de yararlanacağız. PHP bize küçük bir veritabınana erişen web servis yazmamıza olanak sağlayacak. Bunları yaparken Unity’nin kendi içindeki bağlantı fonksiyonlarını kullanacağız. Verileri geri getirirken aslında JSON dizisi veya JSON objesi olarak geri getirsek güzel olurdu fakat Unity içinde ki JSON çözücüyü çalıştıramadım ekstra kütüphaneler indirmek mümkün belki sonraki yazılarda denerim, şuan için JSON’lık bir durum yok ama veritabanında ki verileri çekmek istediğimizde kesinlikle lazım olacaktır.
using UnityEngine; using System.Collections; using UnityEngine.UI; public class deneme : MonoBehaviour { public InputField textBox; void Start() { textBox = GameObject.Find("gidecekVeri").GetComponent<InputField>();//veri göndereceğimiz textbox'ı bulduk } void butonFonk() { //butona bastığımız zaman veriyi alıp veritabanına kaydedecek. StartCoroutine(getData());//fonksiyonu bu şekilde çalıştırmalıyız } IEnumerator getData() { string url = "http://ibrahimozcelik.net/deneme.php";//bağlanacağımız linki yazıyoruz WWWForm sendForm = new WWWForm();//karşı tarafa bir istekte bulunuyoruz form gönderiyoruz yani sendForm.AddField("veri", textBox.text);//karşı tarafada yazdığımız değişkenleri isimleri aynı olacak şekilde eşleştiriyoruz WWW sendData = new WWW(url, sendForm);//formu karşıya gönderiyoruz url ve eklediğimiz bilgilerle yield return sendData;//karşı taraftan bize bir sonuç geri dönüyor } }
Şuana kadar backend kısmına bir veri gönderdik ve en alt satırda backend’in bize geri dönderdiği değeri aldık(yield return sendData -> geri dönen değer) şimdi bir de backend’e bakalım;
<?php $veri = $_POST["veri"];//parantezin içindeki yazan ad ile unity den gönderdiğimiz ad aynı olmalı try { $baglanti = new PDO("mysql:host=localhost;dbname=veritabaniAd;charset=utf8","ibrahim","ozcelik");//veritabanı bilgileri veritabanı kullanıcı adı, şifresi $baglanti -> setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); } catch (PDOException $e)//hata mesajları için { $e -> getMessage(); } $sqlSorgu = $baglanti-> prepare("INSERT INTO tabloAdi SET veri= :verisi");//PDO kullandığımız için prepare ile hazırlıyoruz verileri daha güvenli $insert = $sqlSorgu -> execute (array("veri" => $verisi));//veri sütununa eklemek istediğimiz veriyi ekliyoruz echo "Veri Eklendi"; ?>
Burada verileri kaydederken PDO teknolojisini kullandık. En başta alacağımız veriyi belirttik, veri tabanı bağlantısını sağladık ve sql sorgumuzu yazıp veriyi veritabanına kaydettik. En sondaki satırda echo kısmı ise programa geri dönderdiğimiz cevap. Herkek iyi çalışmalar.