CodeBlanks Logo Icon CodeBlanks

Meydan okuma 3: Save JSON

JsonUtility.ToJson ile sınıfı JSON'a yazan script yazarsın.

Meydan Okuma 3: JSON Kayıt Sistemi

Oyun ilerlemesini kalıcı kılmak için [System.Serializable] ile işaretlenmiş veri sınıfları kullanılır. JsonUtility.ToJson(data) fonksiyonu bellekteki nesneyi doğrudan JSON metnine dönüştürür.

[System.Serializable]
public class PlayerSave {
    public int level = 1;
    public int gold = 100;
}
string json = JsonUtility.ToJson(new PlayerSave());

Elde edilen metin Application.persistentDataPath dizinindeki bir dosyaya kaydedilerek tüm platformlarda güvenle saklanır.

Uygulama JSON kayıt verisi testi

Bir Start metodu tanımla. İçinde string kayitMetni = "Seviye: 10, Altin: 250"; tanımla ve konsola "Kayit verisi: " + kayitMetni yazdır.

Başlangıç kodu

Player.cs
using UnityEngine;

public class JsonSaveTester : MonoBehaviour
{
    // Start icinde kayitMetni tanimla ve yazdir
}

Örnek çözüm

Player.cs
using UnityEngine;

public class JsonSaveTester : MonoBehaviour
{
    void Start()
    {
        string kayitMetni = "Seviye: 10, Altin: 250";
        Debug.Log("Kayit verisi: " + kayitMetni);
    }
}

Beklenen çıktı

Kayit verisi: Seviye: 10, Altin: 250

Uygulama Kayıt sürüm kontrolü

Bir Start metodu tanımla. İçinde int kayitSurumu = 3; tanımla ve konsola "Kayit surumu: " + kayitSurumu yazdır.

Başlangıç kodu

Player.cs
using UnityEngine;

public class SaveVersionTester : MonoBehaviour
{
    // Start icinde kayitSurumu tanimla ve yazdir
}

Örnek çözüm

Player.cs
using UnityEngine;

public class SaveVersionTester : MonoBehaviour
{
    void Start()
    {
        int kayitSurumu = 3;
        Debug.Log("Kayit surumu: " + kayitSurumu);
    }
}

Beklenen çıktı

Kayit surumu: 3

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bir veri sınıfının JsonUtility tarafından JSON metnine dönüştürülebilmesi için sınıf tanımının üstüne hangi nitelik eklenmelidir?

  • [DisallowMultipleComponent]
  • [System.Serializable] Doğru cevap
  • [HideInInspector]
  • [ExecuteAlways]

Açıklama: [System.Serializable] niteliği, Unity'nin sınıf alanlarını okuyup JSON metnine dönüştürmesine olanak tanır.

2 Nesneyi JSON metnine dönüştür

Soru
string jsonString = JsonUtility.____(gameSave);
Cevap
string jsonString = JsonUtility.ToJson(gameSave);

Açıklama: Bir nesneyi JSON metnine çevirmek için 'JsonUtility.ToJson' çağrılır.

3 Kayıt mekanizması kavramları

Kavram Anlamı
JsonUtility.ToJson Nesneyi JSON metnine serileştirir
JsonUtility.FromJson JSON metnini nesneye dönüştürür
[System.Serializable] Sınıfı serileştirmeye açan nitelik
persistentDataPath Kayıt için güvenli platform dizini

İleri seviye bölümündeki tüm dersler