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 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.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
.
- 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
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.