Athene Geschrieben 26. Februar 2023 Melden Share Geschrieben 26. Februar 2023 Hi, Ich habe da eine Frage. Ich möchte versuchen mit dem Input Feld zu arbeiten und bis jetzt klappt das auch ganz gut. Allerdings möchte ich jetzt, dass wenn der Spieler eine Sache eingibt, die eine Funktion aufgerufen wird, und gibt er in das gleiche Feld etwas anderes ein, wird eine andere Funktion aufgerufen. Wie ist das möglich? Danke schonmal im Vorraus. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
gombolo Geschrieben 26. Februar 2023 Melden Share Geschrieben 26. Februar 2023 🤔 hmmm...meinst du so was? Kann man den eigegebenen Text nicht prüfen? Oder ist es eine Freitexteingabe...dann müsstest du den Satz parsen und die einzelnen Elemente untersuchen...aber die einfach Variante ist wohl diese -> if text =="essen" dann essen(); if text == "trinken" dann trinken(); Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Athene Geschrieben 27. Februar 2023 Autor Melden Share Geschrieben 27. Februar 2023 Ich hab das jetzt so, aber beides funktioniert nicht. Wenn ich eines rausschmeißen funktioniert das schon. Ist das so überhaupt der richtige Ansatz? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jog Geschrieben 27. Februar 2023 Melden Share Geschrieben 27. Februar 2023 Hallo, 1. Erzeuge ein InputField 2. Erzeuge ein Leeres GameObject und nenne es zum Beispiel „Eingabe „, weise dem GameObject Dieses Beispiel Script zu. using System.Collections; using System.Collections.Generic; using UnityEngine; public class InputAuswertung : MonoBehaviour { public void Auslesen(string input) // Muss public sein um im Inspector ausgewält werden zu können { if (input.Equals("Wer")) // ist input = Wer ? gibt true zurück wenn Ja { Wer(); // aufruf der Wer() Methode } else if (input.Equals( "was")) // ist input = was ? gibt true zurück wenn Ja { was(); // aufruf der was() Methode } else // wenn nicht tue dieses { Debug.Log("Falsche Eingabe !"); } } //*********************************** private void Wer() { Debug.Log("Die Methode Wer() wurde Aufgerufen"); } //**************************************** private void was() { Debug.Log("Die Methode was() wurde Aufgerufen"); } } 3. Im Inspektor gehst du bei InputField auf OnEndEdit(String) auf das + Zeichen und machst einen Linksklick . Bei None(Object) ziehst du das GameObject „ Eingabe“ bei No Function wählst du InputAuswertung -> Auslesen aus. OnEndEdit(String) löst ein Event aus wenn die Eingabe mit der Returntaste oder einem Klick außerhalb des Eingabefeldes beendet wurde und ruft die dort hinterlegte Methode auf. Hoffe das es dir etwas Hilft. Gruß Jog Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jog Geschrieben 27. Februar 2023 Melden Share Geschrieben 27. Februar 2023 Hallo, vor 59 Minuten schrieb Athene: Ich hab das jetzt so, aber beides funktioniert nicht. Wenn ich eines rausschmeißen funktioniert das schon. Ist das so überhaupt der richtige Ansatz? Du hast auf einem InputField 2* ein Event liegen dadurch wird die magier und back Methode gleichzeitig ausgeführt, z.b. würde set false und set true gleichzeitig gesetzt was natürlich Unsinn ist, und die Reihenfolge der Aufrufe ist auch nicht immer gleich. Deshalb ist es besser die Eingabe Auswertung im Script zu übernehmen. Siehe im obigem Beispiel. Gruß Jog Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Athene Geschrieben 27. Februar 2023 Autor Melden Share Geschrieben 27. Februar 2023 Das funktioniert jetzt, vielen Dank für die Hilfe 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.