В данной статье мы реализуем функционал паузы в игре. Максимально простую, без всяких лишних наворотов. Чтобы было более понятно то, что мы собираемся сделать, предлагаю ознакомиться с описанием.
Описание
На игровой сцене будет располагаться кнопка «Пауза». При её нажатии, игра останавливается, и создаётся затемнение экрана. А так же кнопка паузы сменяется на кнопку «Старт». После нажатия на кнопку «Старт», игра возобновляется, затемнение пропадает, а вместо кнопки старт появляется кнопка «Пауза».
Из перечисленного описания можно заметить, что нам необходимо создать 2 кнопки, и 1 фоновую область, которая будет затемнять игру. Поэтому, давайте приступим к этой реализации.
Для начала создаём объект типа UI – Canvas, где и будут располагаться все наши элементы интерфейса. Настраиваем его:
- В поле Render Mode выбираем Screen Space – Camera. Это нужно, чтобы наш канвас привязать к нашей игровой камере.
- В поле Render Camera перетаскиваем объект нашей камеры из окна Hierarchy.
- В поле UI Scale Mode выбираем Scale With Screen Size.
- В поле Reference Resolution указываем Х=1920 Y=1080. Если Вы создаёте игру для мобильных устройств, то установите Х=1080 Y=1920
Далее создаём 2 объекта типа UI – Button, которые необходимы для наших кнопок. Для более приятной визуализации, добавляем нашим кнопкам спрайты(изображения). Если у Вас нет собственных спрайтов для кнопок, Вы можете скачать их на нашем сайте.
Осталось сделать затемнение экрана(необязательно). Для этого создаём объект типа UI – Panel. Далее в окне <i>Inspector</i> для данного объекта указываем чёрный цвет в поле <i>Сolor</i>, это нужно для затемнения нашей игры.
В завершении нам необходимо объект нашей кнопки переместить в объект Panel. А сам объект Panel отключить через окно Inspector. Его мы будем включать через скрипт C#, когда будет нажата кнопка паузы.
На этом всё. Переходим к программной части.
Программная часть
Для начала объявим переменную для нашего объекта Panel. Это нужно для того, чтобы мы могли обращаться к этой панели, для того чтобы её включить или отключить.
public GameObject panel;
При нажатии на кнопку «Пауза», у нас должно происходить 2 события:
- Объект Panel должен стать активным, чтобы появилось затемнение игры, вместе с кнопкой «Продолжить».
- Остановить время игры до нуля.
Реализуем эти события для кнопки «Пауза», создав следующую функцию:
public void pause()
{
panel.SetActive(true);
Time.timeScale = 0f;
}
Тоже самое создаём и для кнопки «Возобновить», только с противоположными значениями:
public void play()
{
panel.SetActive(false);
Time.timeScale = 1f;
}
Готово, весь код выглядит следующим образом:
using UnityEngine;
public class PlayGame : MonoBehaviour
{
public GameObject panel;
public void play()
{
panel.SetActive(false);
Time.timeScale = 1f;
}
public void pause()
{
panel.SetActive(true);
Time.timeScale = 0f;
}
}
Данный скрипт загружаем к объекту Panel, и в окне Inspector в поле panel, перетаскиваем объект Panel.
Готово! Если вам понравился гайд, буду рад вашим лайкам.