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.cshinzu. - 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-
textdas Ergebnis derlies(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.csauf das Wörterbuch-Objekt. - Ziehe die Datei Deutsch.txt aus dem Assets-Fenster auf das Feld
textfileim Inspector des Wörterbuch-Objekts.
Komponenten verbinden
- Ziehe im UnityEditor
WortLesen.csauf 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.
- das Textfeld-Objekt auf die Eigenschaft
- 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
ErsterTextein.
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.
