CodeBlanks Logo Icon CodeBlanks

Diyalog JSON formatı

Diyalogları JSON olarak yapılandırmayı öğrenirsin.

Diyalogları JSON ile Yapılandırma

Diyalog metinlerini doğrudan C# kodunun içine yazmak yerine harici JSON dosyalarında tutmak büyük kolaylık sağlar. Senaristler ve çevirmenler oyun kodunu değiştirmeden metinleri düzenleyebilir.

{
    "nodes": [
        { "id": 1, "speaker": "Muhafiz", "text": "Dur! Kimsin?", "nextId": 2 }
    ]
}

JSON yapısı hem insanlar tarafından kolayca okunabilir hem de Unity tarafından hızla nesnelere ayrıştırılabilir.

JSON Diyalog Verisini Yükleme

Unity'de projedeki bir JSON dosyası TextAsset olarak temsil edilir. Resources.Load ile dosya okunup JsonUtility.FromJson fonksiyonuna verilerek hafızadaki nesne listesine dönüştürülür.

TextAsset jsonFile = Resources.Load<TextAsset>("Dialogues/npc_01");
DialogueContainer container = JsonUtility.FromJson<DialogueContainer>(jsonFile.text);

Böylece NPC'ye tıklandığı an ilgili JSON dosyası saniyeler içinde belleğe aktarılır.

Uygulama Diyalog JSON verisi simülasyonu

Bir Start metodu tanımla. İçinde int nodeSayisi = 3; tanımla ve konsola "Yuklenen diyalog dugumu: " + nodeSayisi metnini Debug.Log ile yazdır.

Başlangıç kodu

Player.cs
using UnityEngine;

public class DialogueLoader : MonoBehaviour
{
    // Start icinde nodeSayisi tanimla ve yazdir
}

Örnek çözüm

Player.cs
using UnityEngine;

public class DialogueLoader : MonoBehaviour
{
    void Start()
    {
        int nodeSayisi = 3;
        Debug.Log("Yuklenen diyalog dugumu: " + nodeSayisi);
    }
}

Beklenen çıktı

Yuklenen diyalog dugumu: 3

Soru ve cevaplar

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

1 Diyalog metinlerini doğrudan C# koduna yazmak yerine harici bir JSON dosyasında tutmanın en büyük avantajı nedir?

  • Oyunun fizik motorunu devre dışı bırakması
  • Tasarımcıların ve yerelleştirme ekiplerinin kodu değiştirmeden metinleri düzenleyebilmesi Doğru cevap
  • Oyunu yalnızca tek çekirdekli işlemcilerde çalışmaya zorlaması
  • Grafik kartı belleğini tamamen sıfırlaması

Açıklama: Harici JSON dosyaları, kod derlemesine ihtiyaç duymadan diyalog içeriklerinin ve çevirilerin güncellenmesini sağlar.

2 Diyalog dosyasını yükle

Soru
TextAsset jsonFile = Resources.____<TextAsset>("Dialogues/npc_1");
Cevap
TextAsset jsonFile = Resources.Load<TextAsset>("Dialogues/npc_1");

Açıklama: Resources klasöründeki bir varlığı yüklemek için 'Resources.Load' metodu kullanılır.

3 JSON yükleme kavramları

Kavram Anlamı
TextAsset Unity metin dosyası varlık türü
JsonUtility.FromJson JSON metnini diyalog nesnesine çevirir
Resources.Load Proje kaynaklarından dosya yükleme
nodes dizisi Konuşma düğümlerini barındıran liste

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