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.

Dr. René Bühling

Hi, mein Name ist René und ich möchte Dir dabei helfen, deinen Traum vom eigenen Computerspiel Wirklichkeit werden zu lassen. Mein erstes kommerziell veröffentlichtes Spiel habe ich Mitte der 1990er Jahre als Hobby-Projekt mit einem Basic-Dialekt unter Windows entwickelt. Seither verfolge ich das Thema Spieleentwicklung in Hobby, Studium und Beruf. Ich habe über 20 Jahre Erfahrung in allen Phasen des Entwicklungsprozesses, die ich gerne mit dir teilen möchte.