Menu
CoddyTech

命名按钮

本课属于 Coddy Unity 学习旅程的“Unity 脚本基础”单元。第 21 课,共 85 课。

除了按键,Unity 还有按钮:这些名称列在 Input Manager(Edit、Project Settings、Input Manager)中,每个名称都对应一个或多个按键。Input.GetButtonDown("Fire1")查询的是名称,而不是按键。新项目中包含以下按钮:

  • "Jump":空格键
  • "Fire1":左 Ctrl 键或鼠标左键
  • "Fire2":左 Alt 键或鼠标右键
  • "Submit" 和 "Cancel":Enter 键和 Escape 键

游戏手柄按钮也对应相同的名称,而且你可以在 Input Manager 中更改按键,无需修改代码。GetButton、GetButtonDown 和 GetButtonUp 的用法与 GetKey、GetKeyDown 和 GetKeyUp 相同。这个爆能枪会在每次按下 Ctrl 键或点击鼠标时记录一次射击:

void Update()
{
    if (Input.GetButtonDown("Fire1"))
    {
        Debug.Log("Shot!");
    }
}

名称是一个字符串,所以即使拼错也能通过编译。Unity 会在代码行运行时查找这个名称。如果没有名为该名称的按钮,Unity 就会在每一帧抛出异常:ArgumentException: Input Button Fier1 is not setup.看到这条消息时,请对照代码中的名称和 Input Manager 列表中的名称。

challenge icon

挑战

简单

修好青蛙的跳跃,让它再次落地。

  1. 按“开始”:控制台会显示一条关于按钮 "Jumpp" 的错误。把它改成 "Jump"。
  2. 添加第二个 if,判断 Input.GetButtonUp("Jump"),并从 transform.position 中减去 new Vector3(0, hop, 0)。

按“开始”,按住空格键再松开:青蛙会向上跳,然后落地。接着按“检查”。

亲手试试

using UnityEngine;

public class Hopper : MonoBehaviour
{
    public float hop = 1.5f;

    void Update()
    {
        if (Input.GetButtonDown("Jumpp"))
        {
            transform.position += new Vector3(0, hop, 0);
        }
    }
}

Unity 脚本基础中的所有课

自己练习: Unity 在线编辑器