Рассматриваю следующий урок по Unity:
Creating A Main Menu
После того, как меню создано, можно клавиатурой выбирать нужный пункт меню, например Audio. Если зайти в него, то не будет выделен ни один пункт меню, а для того, чтобы перейти на самый первый ползунок громкости (Master Volume), нужно нажать на клавиатуре клавишу ВНИЗ или ВВЕРХ. А если перейти на кнопку BACK и нажать ее, произойдет переход в основное меню, но там уже нельзя будет никуда перейти с помощью клавиатуры или геймпада. Я допускаю, что это меню «простейшее» и в одном из следующих уроков переход по элементам меню можно будет реализовать с помощью инструмента «Анимации», но пока я попробовал исправить этот метод.
1. Создаем скрипт MarkSelected.cs:
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class MarkSelected : MonoBehaviour
{
void OnEnable()
{
EventSystem.current.SetSelectedGameObject(null);
gameObject.GetComponent<Button>().Select();
}
}
Ошибку «NullReferenceException: Object reference not set to an instance of an object
MarkSelected.OnEnable () (at Assets/Scripts/MarkSelected.cs:11)» можно исправить, если добавить в EventSystem -> EventSystem (Script) -> First Selected ссылку на объект StartButton основного меню.
2. Добавляем этот скрипт на элемент меню StartButton для панели MainMenuPanel
3. Добавляем этот скрипт на элемент меню BackButton для панели AudioPanel
4. Добавляем этот скрипт на элемент меню BackButton для панели HelpPanel
5. Теперь, когда панель меню становится активной, она активирует дочерние кнопки. Если эта кнопка из п.2-4, то при открытии нового меню (Аудио или Помощь), будет выделена кнопка «Back». При нажатии на эту кнопку будет открыто основное меню с выделенной кнопкой «Start».
- C#: Сравнить два массива - 12.12.2024
- EVE-Online: Фильтры каналов - 23.11.2024
- Не приходит СМС для авторизации на сайте Госуслуги - 01.11.2024