3DMichael Geschrieben 5. Oktober 2017 Melden Share Geschrieben 5. Oktober 2017 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. Kann mir jemand helfen. Obwohl ich mehrere GUIText Objekte in meinem Projekt habe wird mir kein GUIText angezeigt. Gibt es hier einen Trick? Eine Hilfe würde mich freuen. Gruß Michael Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 5. Oktober 2017 Melden Share Geschrieben 5. Oktober 2017 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 More sharing options...
3DMichael Geschrieben 5. Oktober 2017 Autor Melden Share Geschrieben 5. Oktober 2017 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 More sharing options...
3DMichael Geschrieben 5. Oktober 2017 Autor Melden Share Geschrieben 5. Oktober 2017 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? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 5. Oktober 2017 Melden Share Geschrieben 5. Oktober 2017 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. 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 More sharing options...
3DMichael Geschrieben 5. Oktober 2017 Autor Melden Share Geschrieben 5. Oktober 2017 Das ist bei mir auch so eingestellt. Ich meinte den Code von dir. Den hatte ich in das Script kopiert und das bekommen. Muss die Variable ggf. anders deklariert werden? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 5. Oktober 2017 Melden Share Geschrieben 5. Oktober 2017 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 More sharing options...
3DMichael Geschrieben 5. Oktober 2017 Autor Melden Share Geschrieben 5. Oktober 2017 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. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Mr 3d Geschrieben 5. Oktober 2017 Melden Share Geschrieben 5. Oktober 2017 using UnityEngine.UI; [...] public Text anzeige; public void TextAendern(){ anzeige.text = "Hello World!"; } bzw. einfach 'Text' statt 'string' .. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
3DMichael Geschrieben 5. Oktober 2017 Autor Melden Share Geschrieben 5. Oktober 2017 Super, ihr seid Helden, jetzt hat es geklappt. Danke Michael Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 5. Oktober 2017 Melden Share Geschrieben 5. Oktober 2017 Oh sorry, stimmt, hatte dir eine falsche Deklaration aufgeschrieben. public Text anzeige; Sollte es heißen! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
N00MKRAD Geschrieben 6. Oktober 2017 Melden Share Geschrieben 6. Oktober 2017 Warum coded hier jeder in deutsch Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 6. Oktober 2017 Melden Share Geschrieben 6. Oktober 2017 Ich glaube ich dürfte der einzige sein und das deswegen, weil ich zu faul bin, jedes mal die englischen Begriffe zu suchen und umzudenken. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.