C# 我能';不要让相互排斥的按键工作
我正在尝试编写一个if-else语句,这样即使在Udemy上的一节课中按下多个键时,也只需按一个按钮即可登录到控制台。然而,我已经三次检查了我的代码,以确保它的正确和多个按钮仍将同时登录到控制台C# 我能';不要让相互排斥的按键工作,c#,unity3d,C#,Unity3d,我正在尝试编写一个if-else语句,这样即使在Udemy上的一节课中按下多个键时,也只需按一个按钮即可登录到控制台。然而,我已经三次检查了我的代码,以确保它的正确和多个按钮仍将同时登录到控制台 using System.Collections; using System.Collections.Generic; using UnityEngine; public class NumberWizard : MonoBehaviour { // Start is called befor
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NumberWizard : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
int maximum = 1000;
int minimum = 1;
Debug.Log("Welcome to Number Wizard!");
Debug.Log("Please pick a Number");
Debug.Log("The highest number is: " + maximum);
Debug.Log("The lowest nuumber is 1: " + minimum);
Debug.Log("Tell me if your number is higher or lower than 500");
Debug.Log("Push up = higher, Push down = lower, enter = correct");
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.UpArrow))
{
Debug.Log("Up Arrow key was pressed.");
}
else if (Input.GetKeyDown(KeyCode.DownArrow))
{
Debug.Log("Down Arrow key was pressed.");
}
else if (Input.GetKeyDown(KeyCode.Return))
{
Debug.Log("Enter key was pressed.");
}
}
}
Input.GetKeyDown
将检查在该特定帧中按下的键。它不在乎是否有其他人同时被按下。与其说它是一种条件,不如说它是一种“触发器”
如果你想要排他性,我个人会选择以下方式:
private KeyCode keyPressed = KeyCode.None;
void Update()
{
if ( keyPressed == KeyCode.None )
{
if (Input.GetKeyDown(KeyCode.UpArrow))
{
Debug.Log("Up Arrow key was pressed.");
keyPressed = KeyCode.UpArrow;
}
else if (Input.GetKeyDown(KeyCode.DownArrow))
{
Debug.Log("Down Arrow key was pressed.");
keyPressed = KeyCode.DownArrow;
}
else if (Input.GetKeyDown(KeyCode.Return))
{
Debug.Log("Enter key was pressed.");
keyPressed = KeyCode.Return;
}
}
else
{
if (keyPressed == KeyCode.UpArrow && Input.GetKeyUp(KeyCode.UpArrow))
{
Debug.Log("Up Arrow key was pressed.");
keyPressed = KeyCode.None;
}
else if (keyPressed == KeyCode.DownArrow && Input.GetKeyUp(KeyCode.DownArrow))
{
Debug.Log("Down Arrow key was pressed.");
keyPressed = KeyCode.None;
}
else if (keyPressed == KeyCode.Return && Input.GetKeyUp(KeyCode.Return))
{
Debug.Log("Enter key was pressed.");
keyPressed = KeyCode.None;
}
}
}
这是一个毫无意义的解决方案,但是如果你检查了很多钥匙,可能会变得很麻烦