JSON serileştirme
- Oyun Geliştirme kursu
- İleri seviye
- Ders 20/71
- 4 dk
JsonUtility ile nesneleri JSON'a yazmayı öğrenirsin.
JSON Serileştirme ve JsonUtility
Karmaşık oyun verilerini (can, pozisyon, envanter) bir dosyaya yazabilmek için bellekteki nesnelerin metne dönüştürülmesine serileştirme (serialization) denir. Unity, bu dönüşüm için yerleşik JsonUtility sınıfını sunar.
[System.Serializable]
public class PlayerData {
public string playerName;
public int health;
}Serileştirilecek C# sınıflarının başına mutlaka [System.Serializable] niteliği eklenmelidir.
JsonUtility.ToJson Metodu
Bir veri nesnesini JSON dizesine dönüştürmek için JsonUtility.ToJson(data) çağrılır. Bu metot sınıfın tüm public alanlarını anahtar-değer çiftleri içeren bir metne dönüştürür.
PlayerData data = new PlayerData();
data.playerName = "Hero";
data.health = 100;
string json = JsonUtility.ToJson(data);Elde edilen bu metin kolayca diske yazılabilir, ağ üzerinden gönderilebilir veya okunabilir.
Uygulama JSON dizesi oluşturma
Bir Start metodu tanımla. İçinde string jsonVeri = "Oyuncu: Savasci, Seviye: 5"; tanımla ve konsola "JSON ozeti: " + jsonVeri yazdır.
Başlangıç kodu
using UnityEngine;
public class JsonTester : MonoBehaviour
{
// Start icinde jsonVeri degiskenini tanimla ve yazdir
}Örnek çözüm
using UnityEngine;
public class JsonTester : MonoBehaviour
{
void Start()
{
string jsonVeri = "Oyuncu: Savasci, Seviye: 5";
Debug.Log("JSON ozeti: " + jsonVeri);
}
}Beklenen çıktı
JSON ozeti: Oyuncu: Savasci, Seviye: 5
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bir C# sınıfının JsonUtility tarafından JSON metnine dönüştürülebilmesi için sınıfın başında hangi nitelik bulunmalıdır?
- [HideInInspector]
- [ExecuteInEditMode]
- [RequireComponent]
- [System.Serializable] Doğru cevap
Açıklama: [System.Serializable] niteliği Unity'nin sınıf alanlarını denetleyip JSON metnine çevirmesini mümkün kılar.
2 JSON metnine dönüştürme
string json = JsonUtility.____(playerData);
string json = JsonUtility.ToJson(playerData);
Açıklama: Bir nesneyi JSON biçimine dönüştürmek için 'JsonUtility.ToJson' çağrılır.
3 JSON serileştirme öğeleri
| Kavram | Anlamı |
|---|---|
JsonUtility |
Unity yerleşik JSON dönüştürücüsü |
ToJson |
Nesneyi JSON metnine çevirir |
[System.Serializable] |
Sınıfı serileştirmeye açan nitelik |
JSON |
İnsan ve makine okunabilir metin formatı |