如果(Input.GetKeyDown(KeyCode.UpArrow)); - 统一控制台垃圾邮件

if (Input.GetKeyDown(KeyCode.UpArrow)); - unity console spamming

我实际上正在学习用 c# 编写一些代码,以便在 unity5 中制作小游戏。 我的问题是,当我 运行 脚本时,unity 控制台正在向 "Up arrow pressed" 和 "Down arrow pressed" 发送垃圾邮件,但我没有击中任何东西。

void Update()
{
    if (Input.GetKeyDown(KeyCode.UpArrow));
    {
        print("Up arrow pressed");
    }
    if (Input.GetKeyDown(KeyCode.DownArrow));
    {
        print("Down arrow pressed");
    }
}
if (Input.GetKeyDown(KeyCode.UpArrow));

移除;在末尾。 使用分号,您基本上描述了 if 的执行块是空的。以下

{
    print ...
}

仍然是一个有效的结构,因为它定义了一个范围。

它是 "smpamming",因为每个 if 语句后都有 ;。这使它成为一个空语句,因为:

{
    print("Up arrow pressed");
}

只是一个代码块,无论 if 语句是否成立,它都会执行。 删除分号

void Update()
{
    if (Input.GetKeyDown(KeyCode.UpArrow))
    {
        print("Up arrow pressed");
    }
    if (Input.GetKeyDown(KeyCode.DownArrow))
    {
        print("Down arrow pressed");
    }
}