Unity 5: Кнопки в Андроид игре — пошаговое руководство

Добавим функциональность кнопкам, которые пока не взаимодействуют с пользователем. Нажатие на них не вызывает никаких действий. Научимся отслеживать нажатия и выполнять функции в Unity.

Добавление коллайдеров

В Unity нельзя отслеживать нажатия на объекты без коллайдера. Добавим его к кнопкам. Выбираем все кнопки и добавляем компонент Circle Collider 2D. Используем 2D-коллайдер, поскольку игра двумерная. Для некруглых кнопок (квадраты и т.д.) используйте Box Collider 2D или Edge Collider 2D. Коллайдер должен полностью покрывать кнопку.

Скрипт обработки нажатий

Создадим скрипт Buttons.cs в папке Scripts. Он будет добавлен ко всем кнопкам. В нём создадим функции для обработки нажатия и отпускания кнопки, которые будут менять цвет кнопки.

using UnityEngine;

public class Buttons : MonoBehaviour
{
    public Sprite Blue;
    public Sprite Red;

    void OnMouseDown()
    {
        GetComponent<SpriteRenderer>().sprite = Red;
    }

    void OnMouseUp()
    {
        GetComponent<SpriteRenderer>().sprite = Blue;
    }
}

В этом скрипте:

  • OnMouseDown() — функция, вызываемая при нажатии на кнопку. Меняет спрайт кнопки на красный (Red).
  • OnMouseUp() — функция, вызываемая при отпускании кнопки. Меняет спрайт кнопки обратно на синий (Blue).
  • Blue и Red — переменные для хранения спрайтов синего и красного цветов. Эти спрайты нужно назначить в инспекторе Unity.

Расширение функциональности

Добавим переменную Action типа string. Она будет определять действие при нажатии кнопки. Добавим функцию OnMouseUpAsButton(), вызываемую только при полном нажатии и отпускании кнопки.

void OnMouseUpAsButton()
{
    switch (Action)
    {
        case "Play":
            Application.LoadLevel("Play");
            break;
        case "Rating":
            // Действие для кнопки "Rating"
            break;
        case "Music":
            // Действие для кнопки "Music"
            break;
        case "Google":
            Application.OpenURL("google.com");
            break;
    }
}

В этой функции:

  • Action — переменная, определяющая действие кнопки (Play, Rating, Music, Google). Это значение нужно задать для каждой кнопки в инспекторе Unity.
  • Application.LoadLevel("Play") загружает уровень «Play».
  • Application.OpenURL("google.com") открывает URL в браузере.

Назначая разные значения Action каждой кнопке, реализуем различный функционал.

Мы научились добавлять функционал кнопкам в Unity, используя коллайдеры и скрипты для обработки нажатий. Создали простой механизм для выполнения различных действий в зависимости от нажатой кнопки, используя переменную Action и оператор switch. В следующих уроках создадим уровни и расширим функционал кнопок.

Что будем искать? Например,программа