Задача: создать меню с тремя переключателями, каждая с изображением и текстовым сообщением.
Настройка сцены
Я сразу же создал холст для сцены и пустой объект в качестве UI-менеджера.
У меня есть объект внутри холста, который будет представлять PictureSelectionMenu, и в нем будут храниться все необходимые компоненты, необходимые для выполнения задачи. Я могу создавать дубликаты этого меню всякий раз, когда это необходимо, предварительно создавая объект.
Объекты меню выбора изображения
- Фон — коричневое фоновое изображение.
- Передний план — коричневое изображение, которое будет служить границей для разных изображений.
- Toggle Group Object— хранит все переключатели для изображений 1–3.
Переключатели 1–3 назначаются методу, предоставленному диспетчером пользовательского интерфейса. Каждый отображает свое собственное изображение и текстовое сообщение.
- Заголовок — содержит фон и текст.
- Изображение правила — кнопки-переключатели управляют этим изображением и будут меняться в зависимости от того, какой переключатель выбран.
- Текст правила — кнопки-переключатели управляют текстовым сообщением и будут меняться в зависимости от того, какой переключатель выбран.
Диспетчер пользовательского интерфейса (сценарий правил игрового времени)
Этот сценарий содержит общедоступные методы для различных кнопок-переключателей. Изменение изображения и текста сообщения.
using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI; public class PlayTimeRules : MonoBehaviour { [SerializeField] private Toggle[] toggles; [SerializeField] private Image _currentImage; [SerializeField] private Sprite[] _playerTimeImage; [SerializeField] private TMP_Text _playerTimeText; private void Start() { _playerTimeText.text = "Do Not Touch The Dinos"; _currentImage.overrideSprite = _playerTimeImage[0]; } public void Picture1() { if (toggles[0].isOn == true) { _playerTimeText.text = "Do Not Touch The Dinos"; _currentImage.overrideSprite = _playerTimeImage[0]; } } public void Picture2() { if (toggles[1].isOn == true) { _playerTimeText.text = "Dino's Enjoy Playing Hide n Seek"; _currentImage.overrideSprite = _playerTimeImage[1]; } } public void Picture3() { if (toggles[2].isOn == true) { _playerTimeText.text = "Have Fun!"; _currentImage.overrideSprite = _playerTimeImage[2]; } } }