Input.KeyDown()返回错误但Input.GetKeyDown()没有

时间:2015-05-14 21:23:46

标签: c# unity3d

我有一个奇怪的问题。只要你按住那个按钮,我就试图让一个物体向你按下的方向移动。当我使用Input.GetButton()时,我得到的错误是我使用的方向("左,""右,"" up,"或者" down")未定义,但已定义。如果我使用Input.GetKeyDown()代替,一切都像往常一样编译。

using UnityEngine;
using System.Collections;

public class MovementHandler : MonoBehaviour {

    void Update () {

//      if (Input.GetButton ("left")) //Does Not work
//          Debug.Log ("left");

        if (Input.GetKeyDown ("left")) //Works
            Debug.Log ("left");
    }
}

1 个答案:

答案 0 :(得分:1)

Input.GetButton和Input.GetKeyDown有两个不同的输入。

Input.GetKeyDown检查键"左"被压了。话虽这么说,文档说您应该使用KeyCode对象作为参数,如下所示:

if (Input.GetKeyDown(KeyCode.LeftArrow)) // reads the left arrow key

(请参阅GetKeyDownKeyCode文档。)

Input.GetButton期望检查是否正在按下具有指定名称的Button对象。

if (Input.GetButton("Fire1")) //reads the CTRL key