Unity WWW ve WWWForm Nedir?
Unity WWW ve WWWForm Nedir?
Unity de yüksek skor tabloları ve kullanıcı girişi gibi işlemlerin nasıl yapıldığını merak edenlerimiz vardır işte bunları yapmak için kullandığımız modül aslında WWW ve WWWForm modülleridir. Hadi gelin bu modülleri biraz daha detaylı bir şekilde inceleyelim.
WWW Nedir ?
WWW Unity üzerinden internet sitelerine bağlanmamızı sağlayan modüldür. İnternet sitelerinden kullanıcı verileri, textureler, yüksek puan verileri gibi bir çok veriyi almanızı ve oyun içinde kullanabilmenizi sağlıyor.
İnternet üzerinden JSON dosyalarını okumanızı, düzenlemenizi, MYSQL bağlantıları oluşturmanızı ve daha bir çok alanda internet siteleri ile haberleşmenizi sağlayabiliyor.
İnternet sitelerinde bulunan formlara / yakalayıcılara "GET" ve "POST" verileri göndermenizi de WWW ile yapabiliyorsunuz.
Aslında internette araştırma yaparken gördüğüm bir kaç yerde insanlar bu yöntem ile internet üzerinden ses verileri bile çekiyor diyebilirim.
WWW ile "http://", "https://" ve "file://" protokollerini kontrol edebilirsiniz, IPhone cihazlarda bunlara ek olarak "ftp://" protokolü de kısmi olarak desteklenmektedir ancak bu sadece anonim olan bağlantılar için geçerlidir.
WWW ile ilgili Unity tarafından verilen örneği inceleyelim.
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public string url = "http://images.earthcam.com/ec_metros/ourcams/fridays.jpg"; // Texture dosyasının bulunduğu internet adresi IEnumerator Start() { using (WWW www = new WWW(url)) // WWW sınıfı çağrılıyor. { yield return www; // sitenin indirilmesi bekleniyor. Renderer renderer = GetComponent<Renderer>(); // Objenin renderer komponenti seçiliyor. renderer.material.mainTexture = www.texture; // Objenin Rendererinde bulunan texture internetten indirilen texture ile değiştiriliyor. } } }
WWW ile ilgili aslında yeterince bilgi verdiğimi düşünüyor ve bir diğer modülümüz olan WWWForm modülüne geçiyorum.
WWWForm Nedir ?
using UnityEngine; using UnityEngine.Networking; using System.Collections; public class WWWFormImage : MonoBehaviour { public string screenShotURL= "http://www.my-server.com/cgi-bin/screenshot.pl"; // Use this for initialization void Start() { StartCoroutine(UploadPNG()); // UploadPNG fonksiyonu çağırılıyor. } IEnumerator UploadPNG() { // Aktif karenin geçmesi bekleniyor. yield return new WaitForEndOfFrame(); //RGB 24 boyutunda yeni bir texture oluşturuyoruz. int width = Screen.width; // Genişlik belirledik int height = Screen.height; // Yükseklik belirledik var tex = new Texture2D( width, height, TextureFormat.RGB24, false ); // Texture dosyamızı oluşturduk // Ekrandaki görüntü kesilip texture için atanıyor. tex.ReadPixels( new Rect(0, 0, width, height), 0, 0 ); tex.Apply(); // Oluşturulan texture PNG olarak dönüştürülüyor. byte[] bytes = tex.EncodeToPNG(); Destroy( tex ); // WWWForm oluşturuyoruz WWWForm form = new WWWForm(); // Urhoba Notu : buradaki "frameCount" gideceği sitede bulunan Post metodundaki yakalayıcının adı örnek vermem gerekir ise $_POST["frameCount"] olarak siteden bu veri çekiliyor. form.AddField("frameCount", Time.frameCount.ToString()); // Burada frame sayısını text olarak alıyor ve form içine parametre olarak ekliyor form.AddBinaryData("fileUpload", bytes, "screenShot.png", "image/png"); // Oluşturulan ve dönüştürülen texture form içine parametre olarak ekleniyor. // Oluşturulan form internet sitesine yollanıyor. using (var w = UnityWebRequest.Post(screenShotURL, form)) // WebRequest.Post() ile veriyi internet sitesine gönderdi { yield return w.SendWebRequest(); // Siteye varışın tamamlanması ve sonuçların döndürülmesi istendi if (w.isNetworkError || w.isHttpError) { // Hata var ise hata komutları bastırıldı print(w.error); } else { print("Finished Uploading Screenshot"); // Herhangi bir hata ile karşılaşılmamışsa "Finished Uploading SS" yazısı bastırıldı. } } } }
Yorum Gönder