我不想使用if语句。为了简化和提高性能,我想使用切换用例并执行该方法。我希望所有键盘输入都能被检测到。但是,是否有任何方法可以传递任何按键信息? 我目前的方法是:
// Update is called once per frame
void Update()
{
char a = Input.GetKey();//anything like this method?
switch (a)
{
case 'a':
//print'';
break;
case 'b':
//print'';
break;
default:
break;
}
}
如何在没有if语句的情况下实现任何按键信息检测?
答案 0 :(得分:1)
webdriver.get(response.url)
还可以缓存Enum.GetValues(typeof(KeyCode))的值以进行优化。
答案 1 :(得分:1)
我没有使用过Unity,但是,我了解您的问题,并且我是C#开发人员。
通过快速搜索,我在Unity论坛上找到了一个与您有类似问题的人。这是线程https://answers.unity.com/questions/1520939/check-if-there-is-a-keyboard-input.html。
if (Input.anyKeyDown)
{
Event e = Event.current;
if (e.isKey)
{
Debug.Log("Current Key is : " + e.keyCode.ToString());
}
}
上面的代码(来自Unity论坛链接)使您能够检测input.anyKeyDown(键盘和鼠标)。然后,您可以通过检查输入是否仅为带有e.isKey
的键盘输入来过滤鼠标检测这里是KeyCode的文档。这还包括所有可用的属性(许多与键盘相关的属性,您可以对其进行检查)。
例如(未测试):
Event e = Event.current;
if (e.isKey)
{
Debug.Log("Current Key is : " + e.keyCode.ToString());
if(e.keyCode == KeyCode.A) //checks if the keycode returned equals the 'A' key
{
// Do something
}
}
编辑:如其他答案所述,您可以尝试Input.inputString。根据文档insputString包含“仅ASCII字符”。因此,例如,如果您只是想检查字母,则可以在“更新”方法中执行类似的操作。
void Update()
{
//get the input
var input = Input.inputString;
//ignore null input to avoid unnecessary computation
if (!string.IsNullOrEmpty(input))
{
switch(input)
{
case 'a': break;
case 'b': break;
}
}
}
希望这会有所帮助。
答案 2 :(得分:0)
如果要将输入捕获为字符串,请使用Input.inputString。它将以字符串形式返回在该框中输入的键盘输入。
如果您只想获取一个字符或字符串,这是最简单的方法。
void Update()
{
//get the input
var input = Input.inputString;
//ignore null input to avoid unnecessary computation
if (!string.IsNullOrEmpty(input))
//logic related to the char pressed
Debug.Log("Pressed char: " + Input.inputString);
}
ForeachLoop 此foreach循环有效,但性能较差。它需要一个foreach循环,该循环每次都分配内存,并且必须检查所有可能的键。
在阅读this answer时,您还可以看到可以使用与Event System类似的方法使用相同的方法来创建接口。
OnGUI
您可以捕获Event.current(这是一个unityGUI Event),如this answer中所述,但是这样做您将依赖于OnGUI方法。这种方法的性能非常低。