📌  相关文章
📜  unity c# 检查是否按下了多个键 - C# (1)

📅  最后修改于: 2023-12-03 15:20:51.685000             🧑  作者: Mango

Unity C# 检查是否按下了多个键 - C#

在开发 Unity 游戏时,有时需要检查是否按下了多个键。比如,在玩家同时按下左、右箭头,或上、下箭头时,我们可以同时触发游戏中的某些事件,或者控制角色的移动方向。

本文将介绍如何在 Unity 中使用 C# 代码检查是否按下了多个键。

监听按键事件

Unity 中可以通过监听 Input.GetAxis 或 Input.GetKeyDown 等方法来获取用户输入。以下是一个简单示例:

void Update()
{
    if (Input.GetKey(KeyCode.LeftArrow) && Input.GetKey(KeyCode.RightArrow))
    {
        Debug.Log("同时按下了左、右箭头");
    }
}

上述代码中,我们通过 Input.GetKey 方法分别检查用户是否按下了左右箭头。如果均为 true,则说明用户同时按下了左右箭头,触发相应逻辑。

定义多个键的快捷方式

如果需要在多个地方判断是否同时按下了多个键,则每次都编写上述代码不太方便。我们可以将多个键定义为一个快捷方式,比如:

public static class PlayerInput
{
    public static bool IsLeftRightPressed
    {
        get
        {
            return Input.GetKey(KeyCode.LeftArrow) && Input.GetKey(KeyCode.RightArrow);
        }
    }
}

上述代码中,我们定义了一个名为 PlayerInput 的静态类,并在其中定义了一个名为 IsLeftRightPressed 的静态属性。在 IsLeftRightPressed 的 get 方法中,我们检查用户是否同时按下了左右箭头,返回相应的 bool 值。

有了以上定义,我们在其他地方就可以简单地判断是否按下了多个键,比如:

void Update()
{
    if (PlayerInput.IsLeftRightPressed)
    {
        Debug.Log("同时按下了左、右箭头");
    }
}
键位组合检查

如果需要同时检查多个键位组合的情况,我们可以针对每一个键位组合都定义一个 bool 类型的变量,用于记录该组合是否已按下。代码如下:

public class MultiKeyChecker : MonoBehaviour
{
    private bool leftRightPressed;
    private bool upDownPressed;

    void Update()
    {
        CheckLeftRight();
        CheckUpDown();
        CheckKeysTogether();
    }

    void CheckLeftRight()
    {
        if (Input.GetKeyDown(KeyCode.LeftArrow))
        {
            leftRightPressed = true;
        }

        if (Input.GetKeyUp(KeyCode.LeftArrow))
        {
            leftRightPressed = false;
        }

        if (Input.GetKeyDown(KeyCode.RightArrow))
        {
            leftRightPressed = true;
        }

        if (Input.GetKeyUp(KeyCode.RightArrow))
        {
            leftRightPressed = false;
        }
    }

    void CheckUpDown()
    {
        if (Input.GetKeyDown(KeyCode.UpArrow))
        {
            upDownPressed = true;
        }

        if (Input.GetKeyUp(KeyCode.UpArrow))
        {
            upDownPressed = false;
        }

        if (Input.GetKeyDown(KeyCode.DownArrow))
        {
            upDownPressed = true;
        }

        if (Input.GetKeyUp(KeyCode.DownArrow))
        {
            upDownPressed = false;
        }
    }

    void CheckKeysTogether()
    {
        // 检查同时按下左右箭头
        if (leftRightPressed && !upDownPressed)
        {
            Debug.Log("同时按下了左右箭头");
        }

        // 检查同时按下上下箭头
        if (!leftRightPressed && upDownPressed)
        {
            Debug.Log("同时按下了上下箭头");
        }

        // 检查同时按下上下左右箭头
        if (leftRightPressed && upDownPressed)
        {
            Debug.Log("同时按下了上下左右箭头");
        }
    }
}

上述代码中,我们通过针对每个键位组合的 Check 方法来更新相应的 bool 变量。同时,在 CheckKeysTogether 方法中,我们检查是否同时按下了多个键位组合,触发相应逻辑。

以上就是在 Unity 中检查是否按下多个键的一些方法。希望可以对开发者有所帮助。