Diyalog JSON formatı
- Oyun Geliştirme kursu
- İleri seviye
- Ders 32/71
- 4 dk
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
using UnityEngine;
public class DialogueLoader : MonoBehaviour
{
// Start icinde nodeSayisi tanimla ve yazdir
}Örnek çözüm
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
TextAsset jsonFile = Resources.____<TextAsset>("Dialogues/npc_1");
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 |