Unity 2018 JSON ile Veri Yönetimi -1

Mehmet Kerem Ceylan
2 min readJul 1, 2018

--

Unity oyun motorunda veya herhangi bir araç kullanarak oyun yaparken veri yönetimi konusu sürekli olarak geliştiricilerin kafasında soru işaretlerine yol açmıştır.Kullanıcı verilerinin oyunun tipine göre hem güvenliği hem geliştirici için esnek olması hemde güvenilir olması gerekmektedir.Veri devamlılığı konusunda Unity içinde hali hazırda gelen PlayerPrefs sınıfı yeni kullanıcıların en büyük tercihidir.Kullanımı çok kolay ancak tamamen güvensizdir.Zaten Unity dökümantasyonunda da bahsedildiği üzere PlayerPrefs sınıfının asıl amacı farklı oyun oturumları arasında basit bilgilerin taşınmasıdır.Örnek vermek gerekirse:UI elementlerinin yerleşimi,yerel kullanıcı ismi gibi eğer oyununuzda veri gizliliği ile ilgili bir endişeniz yok ise kullanıcıların bunu değiştirmesi oyununuzu doğrudan ve kompleks hale getirmeyecek ise PlayerPrefs kullanımı sizin için idealdir.Veri gizliliğini,güvenliğini,esnekliğini önemsediğimizde ise JSON veri tipi ön plana çıkmaktadır.

Neden JSON kullanmalıyız sorusunun bazı cevapları için:

  • Esnektir
  • JSON dosyaları boyutu çok düşük dosyalardır.
  • Veri Güvenliğini lokalde korumak istiyorsanız çok basit şifreleme algoritmaları kullanarak bunu sağlayabilirsiniz.
  • Anlaşılması ve uygulanması kolaydır.
  • Web Servisleri ile iletişim konusunu kolaylaştırmaktadır.

Unity içerisinde JSON işlemleri yaparken,yine Unity içinde hazır olarak gelen JsonUtility sınıfından faydalanacağız. .NET için birden çok JSON kütüphanesi olsada Unity içerisinde JsonUtility sınıfı en performanslı seçimdir.Performans testlerine aşağıdaki linkten ulaşabilirsiniz:

https://jacksondunstan.com/articles/3303

Şimdi örnek bir C# model sınıfı oluşturup, bu sınıfı JSON tipine çeviren bir örnek yapacağız.

[System.Serializable]public class PlayerData {public int level;public string playerName;public int itemCount;}

Yukarıda ki model sınıfındaki sınıf değişkenleri JSON dosyamızdaki key değerlerine eşit olmaktadır.

public class GameManager : MonoBehaviour {void Start () {PlayerData player = new PlayerData();player.level = 1;player.playerName = “Kerem”;player.itemCount = 11;string jsonResult = JsonUtility.ToJson(player);Debug.Log(jsonResult);}}

Model sınıfımızı oluşturdukdan sonra GameManager sınıfımız üzerinden yeni bir PlayerData türetip değerlerini rastgele bir şekilde atayıp JSON tipine dönüştürdük.Çıktımız aşağıda ki gibi olmalıdır.

jsonResult değişkenini konsolayazdırdık

Bir sonraki yazımda Liste halindeki objeleri JSON verisine dönüştürmekten verileri kaydedip gerçek bir .json formatındaki bir dosyada tutmaktan ve oyun başında bu verileri oyunun içine çekmekten bahsedeceğim.

İyi çalışmalar.

İkinci kısım : https://medium.com/@mehmetkeremceylan/unity-2019-json-ile-veri-y%C3%B6netimi-2-1f6f7b0ea6f5

--

--