Unity ile Json Oluşturma


Unity İle Json Oluşturma

Merhaba arkadaşlar bu yazımda sizlere Unity ile nasıl JSON dosyası oluşturacağımızı ve buna veri ekleyeceğimizden bahsedeceğim.

Geçelim nasıl Unity ile Json dosyası oluşturulacağına.
İlk olarak projenizi açın ve bir c# dosyası oluşturun ve istediğiniz adı verin, ben "JsonOlusturma" adını veriyorum.


Yeni oluşturduğumuz c# dosyasına giriyor ve yeni bir class oluşturuyoruz. Bu class ı oluşturma sebebimiz json dosyamızın içinde olacak verileri tanımlamak olacak.
Tabi class ı oluştururken üstüne "[System.Serializable]" eklememiz gerekiyor.

[System.Serializable]

public class Json_Verileri

{

    public string yazi_veri;

    public int sayi_veri;

}


Class ı oluşturduktan sonra verileri tanımlamaya başlayabiliriz. Burada önemli olan kısım verileri tanımlarken kullandığımız değişkenlerin veri json dosyasına kaydolurken o şekilde kaydolması.

Şimdi gelelim json dosyasını oluşturmaya ve içerisine veriler eklemeye.
Şimdi yapmamız gereken ilk olarak oluşturduğumuz class ı standart class ın içerisinde bir değişken oluşturup atamak.
Bunu yapmaktaki sebebimiz içerisindeki elemanlara ulaşabilmek.

[SerializeField] private Json_Verileri _json = new Json_Verileri();


Benim oluşturduğum class a bu şekilde erişebiliyorum. Şimdi çektiğimiz class ın elemanlarına ekleme yapmamız gerekiyor bunu da şu şekilde yapıyoruz.

    private void Awake()

    {

     _json.yazi_veri = "Yazı";

     _json.sayi_veri = 01;

    }


Burada gördüğünüz gibi Awake komutunu kullandık bunu kullanmamızın sebebi bütün classlar okunduktan sonra bu verileri eklemesini sağlamak için. Diğer türlü start komutu ile yapsaydık sistemin kodları okuma mantıgı yukarıdan aşağıya doğru olduğu için bazı durumlarda hata alabilirdik.

Bu işlemleri yaptığımız zaman artık veriler yerlerine oturmuş olacaktır ve sadece artık bu verileri sisteme json dosyası olarak kaydetmek kalacaktır. Bunun için şöyle bir şey yapmamız yeterli olacaktır.

 public void Kaydet()

    {

        string kayit_edilecek = JsonUtility.ToJson(_json);

        System.IO.File.WriteAllText(Application.dataPath + "JsonDosyasi".json", kayit_edilecek);      

    }

Bir adet Kaydet isimli fonksiyon oluşturduk ve içinde işlemleri gerçekleştirdik.
string kayit_edilcek kısmı ile class elementlerini text olarak ve Unity nin sunduğu json aracı sayesinde json formatına getirdik, ardından dosya oluşturma işlemi ile dosya yerini belirtip, oluşturulan dosyanın içerisine oluşturduğumuz json dosyasını ekledik.

Bu arada arkadaşlar "Application.dataPath" kayıt dosyanızın oyun dosyaları arasına kaydolmasını sağlar. (Editör üzerinde Assets klasörü içerisine, build aldığınız zaman oyunun yüklü olduğu klasör içerisine.)
"Application.persistentDataPath" kullanırsanız oluşturulan json dosyası
C: => Users => [user] => AppData => LocalLow => [company name]
konumuna kaydolur.

Not : Oyun dosyası ya da locallow içinde herhangi oluşturduğunuz klasöre kaydetmek için yukarıda "JsonDosyasi" yazan kısmı "Dosya Adı/JsonDosyasi" şeklinde değiştirip Dosya Adı yazan kısma oluşturduğunuz dosyanın adını yazmanız yeterli olacaktır.

Buraya kadar her şeyi doğru yaptıysanız artık oyununuza bir buton ekleyip Kaydet fonksiyonunu çağırıp json dosyası oluşturabilirsiniz.

Dosyamızın son hali şu şekilde olmalıdır.
using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class JsonOlusturma : MonoBehaviour

{

    [SerializeField] private Json_Verileri json = new Json_Verileri();

    private void Awake()

    {

        json.yazi_veri = "Text";

        json.sayi_veri = 15;

    }

    public void Kaydet()

    {

        string kayit_edilecek = JsonUtility.ToJson(json);

        System.IO.File.WriteAllText(Application.dataPath + "/Kayıt/" + "save" + ".json", kayit_edilecek);


    }

}



[System.Serializable]

public class Json_Verileri

{

    public string yazi_veri;

    public int sayi_veri;

}

Oluşan json dosyası şu şekilde olacaktır.

{

  "yazi_veri": "Yazı Verisi",

  "sayi_veri": 1
}
Json oluşturma ile ilgili merak ettiklerinizi aşağıda yorum olarak yazabilirsiniz.