Jump to content
Unity Insider Forum

[multi language] Spiel in mehreren Sprachen erstellen


Reggie()

Recommended Posts

Hi, es geht nun in die heisse Phase der Planung meines ersten Spiels. Ich denke es macht Sinn eine Mehrsprachige Version d/eng von Beginn an zu planen, oder?

Ich würde so vorgehen  Alle Strings speichere ich in eine Text-Datei. Bei den Spracheinstellngen im Spiel werden dann alle Strings aus der entsprechenden Sprachdatei gelesen.

Vorteil: Für jede neue Sprache brauche ich nur die Texte in der Datei übersetzen.

Oder gibt es dafür eine andere, einfacherere Methode?

Reggie()

Link zu diesem Kommentar
Auf anderen Seiten teilen

Professionelle Multilanguage-Frameworks machen es auch nicht anders. Meißtens noch mit Dependency-Injection (falls die das was sagt). Das komplizierteste dürfte hierbei das Beschriften von Buttons und dergleichen sein, aber auch nichts, was man durch gute Vorabüberlegung nicht lösen könnte.

Ich könnte die noch vorschlagen den Asset-Store zu durchsuchen, falls du noch nicht selbst drauf gekommen bist.^^

Link zu diesem Kommentar
Auf anderen Seiten teilen

zum Spielstart werden gigabytes geladen. Wie groß wird deine Textdatei schon werden? Vergleich es mit nem ebook. also maximal 1-2 mbytes für ein ausgereiftes Rollenspiel.

Lege eine pro Szene an (+ eine für Systemtexte) und lade die Datei jeweis zu beginn. Ist auch übersichtlicher als alles in einer.

Wenn dein Spielkonzept nur wenig Text hat, macht das Aufteilen natürlich keinen Sinn.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bei meinem Spiel Lost in Nature verwende ich auch eine Textdatei.

Die sieht ungefähr so aus:

$BUTTON_OK=Ok
$ITEM_NAME_STONE=Stein
$ITEM_DESC_STONE=Ein ganz normaler Stein.

Davon gibt es für jede Sprache eine eigene Datei.

In Unity habe ich dann statt den richtigen Text für den Button $BUTTON_OK genommen.

Auf dem Canvas GameObject liegt ein Script das alles automatisch übersetzt indem es alle wichtigen Komponenten durchgeht:

void Start()
{
  Text textArray = GetComponentsInChildren<Text>(true);
  foreach (Text text in textArray)
  {
    text.text = Localization.Get(text.text);
  }
}

Dann das selbe noch mit Button. Die Funktion Localization.Get ist eine statische Klasse, die vorher die Textdatei gelesen hat (nur einmal beim Spielstart) und den Inhalt in ein Dictionary<string,string>() speichert aus den geforderten Content zurück gibt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...