Menu
CoddyTech

Именованные кнопки

Часть раздела Основы скриптинга в Unity путешествия по Unity на Coddy. Урок 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. Нажми «Играть»: в Console появится ошибка, связанная с кнопкой "Jumpp". Замени её на "Jump".
  2. Добавь второй if с Input.GetButtonUp("Jump"), который вычитает new Vector3(0, hop, 0) из transform.position.

Нажми «Играть», удерживай пробел и отпусти его: лягушка подпрыгнет, а затем приземлится. После этого нажми «Проверить».

Попробуйте сами

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