UI-Text aus Text-Datei befüllen

Oft ist es wünschenswert, Bildschirmtexte nicht fest in Unity zuzuweisen, sondern dynamisch aus einer Textdatei zu lesen. Typische Anwendungsfälle sind:

  • Komplexe und wiederkehrende Texte. In einem Dialogsystem werden die Fenster nur einmal definiert und die konkreten Textinhalte dann dynamisch ausgetauscht.
  • Lokalisierung und Übersetzung. Das Spiel soll nicht alle Textinhalte aller Sprachen im Speicher halten müssen, sondern flexibel in Form eines austauschbaren Wörterbuchs verwalten.

Kostenloses Helfer-Script um Textfragmente zu lesen

Lade zunächst die Datei Woerterbuch.cs aus meinem Github-Repository herunter und füge sie in den Assets-Ordner Deines Projekts ein. Dieses Script implementiert einige typische Vorgänge um Schlüssel-Wert-Paare aus einer Textdatei zu lesen.

  • Öffne ein neues Unity-Projekt und schalte die Szene in die 2D-Ansicht.
  • Füge über das Menü GameObject > UI > Text ein Textobjekt inklusive Canvas und EventSystem hinzu.
  • Füge zudem einen Button ein.

Script um ein Textfragment zu lesen

  • Füge den Assets ein neues C#-Script namens WortLesen.cs hinzu.
  • Füge Felder für das Textfeld sowie das Woerterbuch hinzu.
  • Füge eine Funktion für den Button hinzu, die den Übersetzungs-Schlüssel als String-Parameter empfängt.
  • Weise dem Textfeld-text das Ergebnis der lies(schlüssel)-Funktion des Wörterbuchs zu.
using UnityEngine;
using UnityEngine.UI;

public class WortLesen : MonoBehaviour
{
    public Text textfeld;
    public Woerterbuch buch;

    public void ButtonKlick(string schluessel)
    {
        textfeld.text = buch.lies(schluessel);
    }

}

Text-Ressource anlegen

  • Erzeuge in Visual Studio eine neue Textdatei über das Menü Datei > Neu > Datei vom Typ Textdatei.
  • Füge folgendes Schlüssel-Wert-Paar in die Textdatei ein:
    ErsterText Hallo aus der Textdatei!
  • Speichere die Datei innerhalb des Assets-Ordners als Deutsch.txt.

Wörterbuch in Szene anlegen

  • Füge ein leeres Objekt über das Menü GameObject > Create Empty hinzu und nenne es Wörterbuch.
  • Ziehe das Script Woerterbuch.cs auf das Wörterbuch-Objekt.
  • Ziehe die Datei Deutsch.txt aus dem Assets-Fenster auf das Feld textfile im Inspector des Wörterbuch-Objekts.

Komponenten verbinden

  • Ziehe im UnityEditor WortLesen.cs auf den Button in der Hierarchy.
  • Wähle den Button aus und setze im Inspector
    • das Textfeld-Objekt auf die Eigenschaft textfeld.
    • das Wörterbuch-Objekt auf die Eigenschaft buch.
  • Füge der Button-Komponente über den +-Schalter einen OnClick-Ereignisplatz hinzu.
    • Ziehe die WortLesen-Komponente auf das Objekt-Feld des Ereignisplatzes.
    • Wähle aus dem Auswahlfeld WortLesen > ButtonKlick(string) aus.
    • Trage im Parameter-Feld den Text ErsterText ein.

Testen

  • Wechsle in den Play-Modus im Unity-Editor.
  • Klicke auf den Button.
  • Wenn alles richtig ist, erscheint der Text Hallo aus der Textdatei! im Textfeld.
Der Inhalt des Textfelds wird der Textdatei entnommen.