Athene Posted February 26 Report Share Posted February 26 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. Quote Link to comment Share on other sites More sharing options...
gombolo Posted February 26 Report Share Posted February 26 🤔 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(); Quote Link to comment Share on other sites More sharing options...
Athene Posted February 27 Author Report Share Posted February 27 Ich hab das jetzt so, aber beides funktioniert nicht. Wenn ich eines rausschmeißen funktioniert das schon. Ist das so überhaupt der richtige Ansatz? Quote Link to comment Share on other sites More sharing options...
Jog Posted February 27 Report Share Posted February 27 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 Quote Link to comment Share on other sites More sharing options...
Jog Posted February 27 Report Share Posted February 27 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 Quote Link to comment Share on other sites More sharing options...
Athene Posted February 27 Author Report Share Posted February 27 Das funktioniert jetzt, vielen Dank für die Hilfe Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.