Bir Unity oyunu İngilizceye nasıl çevrilir (dışsallaştırılmış metin)
RuneTranslate ile Unity oyunlarını İngilizceye çevirmek için adım adım bir rehber: TextAssets, MonoBehaviour alanları ve StreamingAssets okuma, neden yalnızca dışsallaştırılmış metinle çalıştığı ve tanımlayıcı korumasının oyunu bozmanızı nasıl önlediği.
Unity, gittikçe artan sayıda Japon bağımsız oyununun ve görsel romanın arkasındaki motordur ve yaygın motorlar arasında çevrilmesi en zor olanıdır, çünkü Unity'nin tek bir metin biçimi yoktur. Diyaloglar TextAsset bloklarında, MonoBehaviour dize alanlarında, dağınık StreamingAssets betiklerinde ya da doğrudan bir C# DLL'ine derlenmiş olarak bulunabilir. Bu rehber, RuneTranslate ile bir Unity oyununu çevirmenin adımlarını anlatır ve en az onun kadar önemli olarak Unity'yi farklı kılan tek kuralı açıklar: yalnızca dışsallaştırılmış metin.
Önce büyük uyarı: yalnızca dışsallaştırılmış metin
RuneTranslate, veri içinde yer alan Unity metnini çevirir — motorun çalışma zamanında yüklediği varlık dosyaları, MonoBehaviour bileşenlerindeki dize alanları (diyaloglar, adlar, etiketler) dahil. Çevirmediği şey ise bir geliştiricinin derlenmiş C# koduna sabit olarak gömdüğü metindir — Mono derlemelerindeki Assembly-CSharp.dll ya da IL2CPP ikili dosyası. MonoBehaviour alanları hem Mono hem de IL2CPP derlemelerinde okunur: RuneTranslate tür düzenlerini oyunun kendi DLL'lerinden (Mono) alır ya da Managed/ klasörü olmadığında IL2CPP meta verisinden yeniden oluşturur. Pratikte: betiğini varlıklarda ve bileşenlerde tutan oyunlar iyi çevrilir; her satırı koda derleyen oyunlar yalnızca kısmen çevrilir — ve hangisiyle karşı karşıya olduğunuzu ancak açtığınızda anlarsınız, ki bu da ilk adımdır.
Neye ihtiyacınız var
- Windows için RuneTranslate — ücretsiz, tüm motorlar ve sağlayıcılar açık.
- Bir Unity oyun klasörü — oyunun
.exedosyasını ve bir<GameName>_Data/klasörünü (globalgamemanagers,resources.assets,data.unity3dvelevel*dosyalarını içeren) barındıran dizin. - Bir hedef dil — İngilizce, İspanyolca, Fransızca, Almanca, Portekizce, Rusça, Çince, İtalyanca, Türkçe, Vietnamca ve 20'den fazlası.
- Bir çeviri sağlayıcı. Ücretsiz Google Translate kutudan çıktığı gibi çalışır; DeepL'in ücretsiz bir kademesi vardır; OpenAI, Anthropic, yerel bir model ve OpenAI uyumlu herhangi bir API kendi anahtarınızı gerektirir.
1. Adım: Oyun klasörünü açın
RuneTranslate'i başlatın, Yeni proje'ye tıklayın ve onu Unity oyun dizinine yönlendirin. Motor algılama _Data/ klasörünü arar ve projeyi Unity olarak tanımlar. Yerleşik bir UnityPy Python yardımcı bileşeni (yükleyicinin içinde gelir) varlık dosyalarını açar ve okunabilir dizeleri %APPDATA%/RuneTranslate/unity-workspace/<projectId>/ altındaki proje başına bir çalışma alanına listeler. Orijinal oyun klasörünüz asla değiştirilmez. Unity elden gelenin en iyisi türünde bir motordur — yeniden dağıtmadan önce dışa aktarılan derlemenin çalıştığını doğrulayın.
2. Adım: Dizeler nasıl çıkarılır
RuneTranslate, Unity'nin metni dışsallaştırdığı her yerden metin okur:
- TextAssets —
.assetsve AssetBundles içine gömülü JSON / CSV / betik blokları, biçimi tanıyan bir çıkarıcıyla dilimlenir. - MonoBehaviour dize alanları — bileşenlerdeki görüntülenen metin (diyaloglar, adlar, etiketler), hem Mono hem de IL2CPP derlemelerinde (tür bilgisi oyunun DLL'lerinden gelir ya da IL2CPP meta verisinden yeniden oluşturulur).
- StreamingAssets — doğrudan diskte gezilen dağınık betik dosyaları (
.json,.txt,.csv,.ks).
Unity, aynı zamanda aşırı çevirinin en çok zarar verdiği yerdir, bu yüzden RuneTranslate bunun için bir koruma içerir. Birçok MonoBehaviour dizesi aslında hiç görüntülenen metin değildir — bunlar kontrol tanımlayıcıları ve akış işlenenleridir: bir LoadScene çağrısının dizeyle çözdüğü sahne adları, mesaj yönlendirme anahtarları, animasyon / ses klibi adları, Live2D parça adları ve Fungus'un If / SetVariable mantığındaki karşılaştırma değerleri (örneğin 村落出口 gibi bir bayrak). Bunları çevirirseniz oyun sessizce bozulur — klasik belirti, hiçbir hata olmadan sonsuza dek süren bir «yükleniyor» ekranıdır. RuneTranslate bunları otomatik olarak hariç tutulan şeklinde sınıflandırır (kırmızıyla gösterilir, yalnızca sizin onayınızla), böylece editör gerçek diyalogları ve etiketleri öne çıkarır ve mekanizmaya dokunmaz. Fungus'un {$var} ikameleri ile {color=...} / TMP <...> işaretlemesi, çeviriyi sağlam atlatabilmeleri için yer tutucuların arkasına maskelenir.
3. Adım: Çevirin ve gözden geçirin
Bir sağlayıcı seçin ve çalıştırın. Diyaloglar için DeepL ya da bir LLM en iyi sonucu verir; ücretsiz Google Translate menüleri ve eşya adlarını karşılar. Önce kadronuz ve tekrar eden terimleriniz için bir sözlük oluşturun — bkz. Sözlük 101. Her satır, editörde kaynağının yanına düşer; satır içinde düzenleyin (odak kaybında ya da Ctrl+Enter ile kaydedilir) ve ikinci geçişte redaksiyon için isteğe bağlı yapay zeka iyileştiricisini çalıştırın. RuneTranslate'in ücretsiz kademesi, ücretliye göre ~3–4 kat daha yavaş olacak şekilde kısıtlanmıştır — çıktı kalitesi aynıdır.
4. Adım: Oynanabilir bir derleme dışa aktarın
Dışa aktar'a tıklayın. RuneTranslate oyunu kopyalar, ardından çevrilmiş dizeleri varlık dosyalarına yerinde geri yamalar. Geri yazma sırasında aynı hariç tutma koruması çalışır, böylece eski bir proje yeniden dışa aktarımda yanlışlıkla çevrilmiş bir sahne adını ya da akış işlenenini gönderemez. Çıktı, seçtiğiniz konumda oyunun tam ve çalıştırılabilir bir kopyasıdır — .exe'yi başlatın, hedef dilinizde oynanır.
Bilinen kısıtlamalar
- Yalnızca dışsallaştırılmış metin: derlenmiş C# koduna sabit gömülü dizeler (Mono'da
Assembly-CSharp.dllya da IL2CPP ikili dosyası) çevrilmez. MonoBehaviour veri alanları ise çevrilir — hem Mono hem de IL2CPP derlemelerinde. - IL2CPP MonoBehaviour okuması, ayrıştırılabilir bir
global-metadata.datgerektirir; ağır şekilde şaşırtılmış meta veri yeniden oluşturulamayabilir (elden gelenin en iyisi). - Elden gelenin en iyisi: paylaşmadan önce dışa aktarılan oyunun başladığını ve doğru okunduğunu doğrulayın.
- Görsellerdeki metin (logolar, elle çizilmiş arayüz, CG altyazıları) çevrilmez — makine çevirisinin kapsamı dışındadır.
Bu neden eski yönteme göre daha kolay
Elle Unity çevirisi; varlıkları UABE ya da AssetStudio ile açmak, hangi TextAssets ve MonoBehaviour alanlarının gerçek metin barındırdığını aramak, oyunu çökerten tanımlayıcı dizelerinden elle kaçınmak ve ardından varlık tablosunu bozmadan yeniden içe aktarmak demekti. RuneTranslate; çıkarmayı, sınıflandırmayı (mekanizmayı çevirmemeniz için), çeviriyi ve yerinde yamalamayı birkaç tıka indirir — üstelik ifadeyi siz denetleyebilesiniz diye editör açık kalır.
Tüm özellik listesi için Unity motoru sayfasına bakın, HTML tabanlı bir motor için TyranoBuilder rehberini okuyun ya da RuneTranslate'i indirip gerçek bir oyunda deneyin.
RuneTranslate'i denemeye hazır mısın?
Ücretsiz katman her motoru + her çeviri sağlayıcısını açar. Supporter ($3/mo) tam hızı açar.
Windows için indir