Jump to content
Unity Insider Forum

UI Text mit einem Script ändern


3DMichael

Recommended Posts

Hallo Leute,

seit einigen Tagen und diverse Tutorials versuche ich über einen Collider einen Begrüßungstext und dann weitere Anweisungen auf einen Monitor als Text da zu stellen.

Der Collider funktioniert auch gut, aber ich bekomme einfach keinen Zugang zum GUIText Objekt.

Die Tutorials die ich im Netz gefunden habe sind leider alle für Unity4 und funktionieren nicht.:wacko:

Kann mir jemand helfen.  

Obwohl ich mehrere GUIText Objekte in meinem Projekt habe wird mir kein GUIText angezeigt.  image.png.80dd926f98538becb5918effbe95072f.png 

Gibt es hier einen Trick?

Eine Hilfe würde mich freuen.:rolleyes:

 

Gruß

Michael

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du müsstest mal etwas weiter ausholen.^^

Warum willst du einen Collider für eine Textanzeige nehmen? Erklär mal was du machen willst.

Im übrigen jeglicher GUIText muss einem Canvas untergeordnet sein.

Und wenn du einen Text ändern willst, musst du wissen was du ansprechen willst.

Im Inspector musst du nun auf den String "anzeige" das Textlabel ziehen, was du verändern möchtest.

public string anzeige;

public void TextAendern() {
	anzeige.text = "Ich ändere jetzt den Text";
	// ODER
	anzeige.text = integer.ToString();
}

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mein Spieler soll in einem Raum starten.

In diesem Raum gibt es mehrere Türen und ein Monitor an der Wand.

Über diesem Monitor soll eine Auswahl von möglichen Scene ausgewählt werden.

Wenn der Spieler nun an den Monitor heran tritt soll der Monitor erwachen und den Spieler begrüssen.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das müsstest du über einen großen Collider oder Über Raycasting machen.

Collider wäre einfacher, das Script musst du auf den Monitor ziehen und ihm einen Collider verpassen, er muss ein Trigger sein (Häkchen).

Wenn der Spieler nun den Bereich betritt, würde nun das Script reagieren.

Das Script des Bildschirms müsste dann zwei Methoden haben:

private void OnCollisionEnter() {
	//Der Bildschirm erwacht wenn der Spieler einen bestimmten Bereich betritt
}

private void OnCollisionExit() {
	// Der Bildschimr geht aus wenn der Spieler einen bestimmten Bereich verlässt
}
vor 6 Minuten schrieb michaelschmich:

Das Text Objekt ist in einem Canvas.

Wenn ich die Variable "anzeige" als ein String definiere warum muss dann noch der Text in "anzeige.Text" eingesetzt werden?


Weil du ein Text Script hast, hier ist der Text enthalten und andere Funktionen. Du musst impliziet das Element des Scriptes ansprechen, was du brauchst, also TEXT.

Text.jpg

Du kannst nämlich auch Color und Font ansprechen, z.B.:

// Farbe ändern
textLevel.color = new Color32(12,12,12,255);

// Text ändern
textLevel.text = "Ich bin ein Text";

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du brauchst noch eine using-Direktive, die fügst du ganz oben an dein Script an. (UI = User Interface)

using UnityEngine.UI;

Des weiteren hast du da einen kleinen Fehler, so wäre es richtig:

private int zahl = 2;

anzeige.Text = zahl.ToString();

Also bei dir eingebaut:

public string anzeige;
private int zahl = 2;

public void TextAendern() {
  anzeige.text = "Ich ändere den Text";
  // ODER
  anzeige.text = zahl.ToString();
}

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja, die using-Direktive fehlte, habe ich jetzt eingefügt.

Beim Startversuch bekomme ich jetzt folgende Fehlermeldung

Assets/Scripts/Monitor_ein.cs(31,17): error CS1061: Type `string' does not contain a definition for `text' and no extension method `text' of type `string' could be found. Are you missing an assembly reference?

Und das Textobjekt kann ich per Drag & Drop auch nicht einfügen.

image.png.1856a1426e292e58334a2d0b5843494f.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...