Включение и выключение панелей
Часть раздела Создание настоящих игр путешествия по Unity на Coddy. Урок 9 из 60.
Панель — это изображение UI, часто растянутое на весь экран, с дочерними кнопками и текстовыми элементами. Вызов SetActive(false) для панели скрывает её вместе со всем содержимым, а на её кнопки нельзя нажать, пока она скрыта. Когда панель отображается, её изображение перехватывает нажатия, предназначенные для объектов под ней, поэтому на кнопки за полноэкранной панелью нажать нельзя. Эта карта открывается кнопкой в углу и закрывается кнопкой на карте:
public GameObject mapPanel;
public Button mapButton;
public Button closeButton;
void Start()
{
mapPanel.SetActive(false);
mapButton.onClick.AddListener(() => mapPanel.SetActive(true));
closeButton.onClick.AddListener(() => mapPanel.SetActive(false));
}Панели проще редактировать, когда они отображаются, поэтому сцены часто сохраняют с включёнными панелями, а Start() скрывает их. Не размещай скрипт, открывающий панель, на самой панели: неактивный GameObject не получает вызовы Start() или Update(), поэтому скрипт на панели, сохранённой скрытой, так и не подключил бы её кнопки. Для этого хорошо подойдут Canvas или объект игрового менеджера — они остаются активными. mapPanel.activeSelf показывает, активна ли панель, поэтому mapPanel.SetActive(!mapPanel.activeSelf) переключает её состояние.
Задание
ЛегкоДобавь меню в игру на лугу: напиши Start() в Menu.cs.
- Скрой
menuPanelиhelpPanelс помощьюSetActive(false). menuButtonпоказывает меню и задаётmover.enabled = false;resumeButtonскрывает его и задаётmover.enabled = true.helpButtonскрывает меню и показывает справку;backButtonделает наоборот.
Нажми «Играть» и открой меню: игрок не сможет ходить, пока ты не нажмёшь «Продолжить». Затем нажми «Проверить».
Попробуйте сами
using UnityEngine;
using UnityEngine.UI;
public class Menu : MonoBehaviour
{
public GameObject menuPanel;
public GameObject helpPanel;
public Button menuButton;
public Button resumeButton;
public Button helpButton;
public Button backButton;
public PlayerMover mover;
void Start()
{
// Скройте обе панели, затем подключите кнопки Menu, Resume, Help и Back
}
}
Все уроки раздела Создание настоящих игр
1Текст на экране
Холст и текстПокажем счётФорматирование чиселТаймер обратного отсчётаПовторение: спидометр4Сцены и уровни
Загрузить сценуПерезапустить уровеньСледующий уровеньСохранить между сценамиПовторение: выбор уровня2Кнопки и экраны
Кнопки и onClickЛямбдыСвязи в InspectorВключение и выключение панелейШкалы здоровьяПовторение: магазин улучшений5Сохранение с помощью PlayerPrefs
Сохранение числаЗагрузка со значением по умолчаниюРекордСохранение настроекПовторение: монеты в банкеПотренируйтесь самостоятельно: Песочница Unity