Unity 2019 JSON ile Veri Yönetimi -2

Mehmet Kerem Ceylan
2 min readNov 29, 2019

--

Birinci kısım : https://medium.com/@mehmetkeremceylan/unity-2018-json-ile-veri-y%C3%B6netimi-1-ef0b3e256836

Bir önceki yazımızda model bir sınıf oluşturup o sınıfın değişkenlerine değerler verip JSON formatına dönüştürmüştük.Bu yazımızda dönüştürdüğümüz JSON bilgilerini bir dosyada tutmaktan bahsedeceğiz.Write() fonksiyonumuz ile bu dosyaya bilgilerimizi yazıp(eğer böyle bir dosya yoksa oluşturup) , Read() fonksiyonumuz ile bu dosyadan bilgilerimizi çekeceğiz.

playerData dosyası JSON tipinde bir dosyadır.Bu dosyaya erişim sağlayıp içerisine bilgi aktarıp,bilgi çekmek için dosya yoluna ulaşmamız gerekmektedir.Path.Combine fonksiyonu ile Unity Engine’in bize önceden rezerve ettiği persistentDataPath yolunda kendi dosya ismimize ulaşıyoruz.Dosyanın varlığını kontrol ettikten sonra içindeki bilgileri File.ReadAllText fonksiyonu ile okuyup önceden oluşturduğumuz ve fonksiyonumuza parametre olarak verdiğimiz ‘obj’ isimli objemizin üzerine yazıyoruz.(T türünden tanımlamamızın sebebi yeniden kullanılabilirliktir , dilediğiniz tipte objeyi okuyup yazmanızı sağlar)

private string playerDataFileName = "playerData.txt";bool Read<T>(string fileName, T obj){try {string filePath = Path.Combine(Application.persistentDataPath, fileName);if (File.Exists(filePath)){string dataAsJson = File.ReadAllText(filePath);JsonUtility.FromJsonOverwrite(dataAsJson, obj);return true;}}catch (Exception e){Debug.Log(e.Message);}return false;}

Dosyamız erişimi sağladık içerisinde bilgi varsa okuduk ve objemize yazdık.Write() fonksiyonumuz ile dosyamıza bilgileri kaydedeceğiz.Önce dosya yolumuzun varlığını kontrol edip daha sonra o yol yok ise oluşturuyoruz.Var ise oluşturduğumuz json model textini dosya içine yazıyoruz.

bool Write<T>(string fileName, T obj){try {string filePath = Path.Combine(Application.persistentDataPath, fileName);string path = Path.GetDirectoryName(filePath);if (!Directory.Exists(path)){Directory.CreateDirectory(path);}string data = JsonUtility.ToJson(obj);File.WriteAllText(filePath, data);return true;}catch (Exception e){Debug.Log(e.Message);}return false;}

Bir sonraki yazımızda görüşmek üzere :)

--

--