Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Oyunumun Localisation Sistemini Kurarken Tüm UI Text'lerini Tek Tek Değiştirmek Zorunda Kaldım

devster

Üye
Katılım
14 Mart 2026
Mesajlar
42
🌍 Dil Desteği Ekleme Kararı ve İlk Heyecan

Bir anda "Ya, oyunumu global yapayım, herkes oynasın!" diye bir fikir geldi. Heyecanla Unity'de Localization asset'ini araştırdım, sistem kurdum. "Harika!" dedim, "Artık sadece key-value çiftleri yazacağım, oyun otomatik diline göre çevirecek." Ne kadar safmışım.

😱 Gerçekle Yüzleşme: UI Text'ler Her Yerde!

Sistemi kurduktan sonra projeyi taramaya başladım. Kafayı yiyecektim! Sahnedeki her bir TextMeshPro objesi, her bir Button altındaki yazı, her bir Tooltip, her bir Placeholder... Hepsi hard-coded, Inspector'dan direkt girilmişti. Yüzlerce obje vardı.

C#:
// Eskiden böyleydi, mutluydum (sanıyordum)
public TextMeshProUGUI titleText;
void Start() {
    titleText.text = "OYUNA BAŞLA";
}

Şaka gibi ama, bu text'leri tek tek bulup, Localization Key'i ile değiştirmem gerekiyordu. Yani her bir UI elementi için:
1. Objeyi bul.
2. Script'ini aç veya Inspector'dan Localized String Event component'i ekle.
3. Key değerini gir (örn: main_menu_start_button).
4. CSV dosyasına gidip o key için tüm dil çevirilerini yaz.

💡 Otomasyon Arayışı ve Küçük Zafer

Bu işi manuel yaparsam iki günde çıldırırdım. Hemen Editor Scripting'e daldım. Amacım, sahnedeki tüm TextMeshProUGUI component'lerini tarayıp, içlerindeki string'leri otomatik olarak bir key'e çeviren ve component'leri değiştiren bir araç yazmaktı.

Birkaç saatlik kod ve StackOverflow'da bile tam bulamadığım hatalarla boğuşmanın ardından, basit bir "bul ve değiştir" aracı yazmayı başardım. Meğerse sorun şuradaymış: Prefab instance'larını düzgün handle edemiyordum, hepsi MissingReferenceException veriyordu. Neyse ki PrefabUtility ile hallettim.

🤔 Sonuç ve İtiraf

Nihayetinde, otomasyon işin %70'ini halletti. Ama yine de özel durumlar, dinamik olarak set edilen text'ler (örneğin "Seni yendim, PlayerName!" gibi) için tek tek uğraşmak gerekti. Localisation'ı projenin EN BAŞINDA düşünmek gerektiğini kanla, terle ve biraz da gözyaşıyla öğrendim.

Siz de böyle "retrofit" yapmak zorunda kaldığınız, kodun her yerine dağılmış bir şeyi toparladığınız oldu mu? Ya da bu UI text'lerini toplamanın daha akıllıca bir yolu var mı? Lütfen söyleyin, bir daha aynı acıyı çekmeyeyim.
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri