Ich erstelle ein Dialogsystem auf Einheit, wo der Benutzer Optionen zur Auswahl hat und entweder eine Antwort über ein Textfeld erhält oder mehr Optionen zur Auswahl bekommt.Unity Update-Methode gleiche Tasteneingabe zweimal
Zuerst habe ich 3 Möglichkeiten. Diese 3 Optionen gehören zu einem Skript und weitere 2 Optionen gehören zu einem anderen, die beide gleichzeitig ausgeführt werden. Jede Option hat einen int-Index (erste Option = 0, zweite Option = 1 usw.). Ich habe es so gemacht, dass, wenn ich auf Option 1 drücke, der Index 3 wird, um zur vierten Option zu gehen. Da ich alles in Update gesetzt habe, um auf die Eingabe des Schlüssels durch den Benutzer zu warten, wird der Benutzer, wenn er die Eingabetaste drückt, von beiden Skripten ausgeführt, so dass beide Anweisungen gleichzeitig eingegeben werden.
Was passiert im Grunde, wenn i Option 1 wählen, im die Antwort von Option 4 sofort bekommen, weil, wenn ich sie ausgeführt von beiden Skripten Enter drücken
Wie kann ich es so, dass, wenn ich die Eingabetaste drücken für Option 1 Es ignoriert die andere Aussage bitte. Screenshots unten.
if (Input.GetKey (KeyCode.Return)) {
if (indexConversation == 0) {
Debug.Log("first Option");
// GameObject.Find("Scripts2").SetActive(true);
telResponse.text = "Response 1";
Conv1Controller.Conv1showConversation = true;
indexConversation = 3;
Debug.Log (indexConversation);
} else if (indexConversation == 1) {
Debug.Log("second Option");
telResponse.text = "Response 2";
StartCoroutine(responseTwoFollowedbySix());
}
else if (indexConversation == 2) {
Debug.Log("third Option");
telResponse.text = "Response 3";
StartCoroutine(responseThreeFollowedbyFourFollowedbySeven());
}
showConversation = false;
}
Das andere Skript (Option 4 und 5)
if (Input.GetKey(KeyCode.Return))
{
if (DialogueController.indexConversation == 3)
{
Debug.Log("Fourth Option");
telResponse.text = "Response 4";
}
if (DialogueController.indexConversation == 4)
{
Debug.Log("Option 5");
telResponse.text = "Response 5";
}
//Conv1showConversation = false;
}
Veröffentlichen Sie Ihren Code nicht als Screenshots. Kopiere und poste diesen Code in deiner Frage. – Programmer
Gibt es keine Möglichkeit, sie in dasselbe Skript zu schreiben? – CNuts
Ich setze sie in separate Skripte, weil sie die gleichen Methoden nur Option 4 und 5 anders haben und auch ich kann nicht 2 OnGUI richtig haben? –