Unity JSON Oluşturma ve Okuma

Unity JSON Oluşturma ve Okuma

Unity JSON Oluşturma ve Okuma

 Hepinize merhaba arkadaşlar bu yazımda sizlere Unity ile JSON dosyası oluşturmayı ve oluşturduğumuz dosyayı okumayı anlatacağım. 

Aslında bunun ile ilgili sitemizde 3 adet yazı bulunuyor ancak yazılım alanında yazdığımız kodlar sürekli olarak değişir, işte bu yüzden şu anda bu konu ile ilgili yazıyı tekrardan yazıyorum. 

Eskiden yazdığım kodlarda çalışıyordu ancak burada anlatacağım yöntem diğerlerine nazaran çok daha basit ve çok daha yeniden kullanılabilir.

Eski yazıları incelemek isterseniz aşağıdaki bağlantıları kullanabilirsiniz.

Unity İle JSON Oluşturma ve Okuma Scripti

İlk olarak okuma ve yazma işlemi için olan kodlarımızı yazalım ve daha sonra nasıl kullanacağımıza bakalım.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System; // Dosya işlemlerini yapabilmemiz için gerekli olan kütüphanemiz.

public class UBJsonDataManager : MonoBehaviour
{
    public static dynamic ReadJSONData(string dataPath, Type dataType) // JSON okuma işlemi için bir fonksiyon oluşturuyoruz, dosya konumunu ve tipini istiyoruz.
    {
        string jsonData = System.IO.File.ReadAllText(dataPath); // Dosyamızı okuyoruz
        dynamic returnedData = JsonUtility.FromJson(jsonData, dataType); // Okuduğumuz dosyayı json dosyasından istediğimiz tipdeki dosyaya dönüştürüyoruz.
        return returnedData; // Dosyamızı döndürüyoruz.
    }


    public static void SaveJSONData(dynamic data, string dataPath) // JSON dosyası oluşturmak için fonksiyonumuzu oluşturuyoruz, verimizi ve dosya konumu istiyoruz.
    {
        string jsonData = JsonUtility.ToJson(data); // Verimizi JSON olarak dönüştürüyoruz.
        System.IO.File.WriteAllText(dataPath, jsonData); // Verimizi kaydediyoruz.
    }
}

Unity İle JSON Oluşturma ve Okuma Scripti Kullanımı

Şimdi gelelim oluşturduğumuz bu scripti nasıl kullanacağımıza.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class UBJsonDataManagerExample : MonoBehaviour
{
    UBJsonDataManagerExampleSingleData singleData; // Tek veri için sınıfımızı çağırıyoruz. Editör üzerinden istediğimiz değerleri giriyoruz.
    UBJsonDataManagerExampleWrapper multipleData; // Dizi için sınıfımızı çağırıyoruz. Editör üzerinden istediğimiz değerleri giriyoruz

    UBJsonDataManagerExampleSingleData readedSingleData; // Çektiğimiz verileri buraya yazdıracağız.
    UBJsonDataManagerExampleWrapper readedMultipleData; // Çektiğimiz dizi şeklindeki verileri buraya yazdıracağız.

    public void SaveData() // Verileri kaydetmek için bir fonksiyon oluşturduk.
    {
        string singleDataPath = Application.dataPath + "/singleData.json"; // Tekli dosyamızın konumunu girdik.
        string multipleDataPath = Application.dataPath + "/multipleData.json"; // Dizi dosyamızın konumunu girdik.

        UBJsonDataManager.SaveJSONData(singleData, singleDataPath); // Tekli verimizi kaydettik, kaydetmek için veri ve dosya konumunu girdik.
        UBJsonDataManager.SaveJSONData(multipleData, multipleDataPath); // Çoklu verilerimizi kaydettik, kaydetmek için veri ve dosya konumunu girdik.
    }

    public void ReadData() // Verileri okumak için fonksiyon oluşturuyoruz.
    {
        string singleDataPath = Application.dataPath + "/singleData.json"; // Tekli dosyamızın konumunu girdik.
        string multipleDataPath = Application.dataPath + "/multipleData.json"; // Dizi dosyamızın konumunu girdik.

        readedSingleData = UBJsonDataManager.ReadJSONData(singleDataPath, typeof(UBJsonDataManagerExampleSingleData)); // Tekli verimizi çektik, dosya konumu ve veri tipini gönderdik.
        readedMultipleData = UBJsonDataManager.ReadJSONData(multipleDataPath, typeof(UBJsonDataManagerExampleWrapper)); // Çoklu verilerimizi çektik, dosya konumu ve veri tipini gönderdik.
    }

    private void Awake()
    {
        SaveData(); // Verileri kaydettik.
        ReadData(); // Verileri çektik.
    }

}


[System.Serializable]
public class UBJsonDataManagerExampleWrapper // Dizi olan verileri kaydetmek için wrapper oluşturmamız gerekiyor. Wrapper oluşturuyoruz.
{
    public UBJsonDataManagerExampleSingleData[] uBJsonDataManagerExampleSingleDatas; // Çoklu veri kaydetmek için yeni oluşturduğumuz sınıfın içinde dizi oluşturduk.
}

[System.Serializable]
public class UBJsonDataManagerExampleSingleData // Veri oluşturmak için bir sınıf oluşturuyoruz, Bunun sayesinde verileri editörde düzenleyebilir - JSON dosyasından çekebiliriz.
{
    public int exampleSingleDataInt;
    public string exampleSingleDataString;
}




Evet arkadaşlar Unity JSON oluşturma ve okuma ile ilgili sorularınız bulunuyor ise bana aşağıdaki yorum kısmından sorabilirsiniz. İyi günler.