Добавим функциональность кнопкам, которые пока не взаимодействуют с пользователем. Нажатие на них не вызывает никаких действий. Научимся отслеживать нажатия и выполнять функции в 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. В следующих уроках создадим уровни и расширим функционал кнопок.