Как сделать кнопку выход в юнити

Добавил пользователь Morpheus
Обновлено: 04.10.2024

Часть первая. Подготовка к работе.

1. Для начала, конечно же, откройте сам Unity3D и создайте новый, чистый проект. А как? File --> New Project.
2. Создайте его в пути, не имеющий кириллицы. И не отмечайте галочки, нам вполне сойдет стандартный набор инструментов.
3. Перед нами голый проект, на котором мы создадим ваше первое меню.


4. Создайте новый скрипт нажатием ПКМ (правой кнопкой мыши), во вкладке Project.
Create --> JavaScript.
5. Назовем его TextControl. Щелкните два раза ЛКМ (левой кнопкой мыши) по названию скрипта.

Часть вторая. Сборка сцены.

6. В свежей сцене создайте Plane и четыре куба через вкладку GameObject --> Create Other --> Plane, Cube.
7. Так же добавьте Point Light для эффекта.

8. У вас должно получится что-то в этом духе.


9. Теперь создайте три 3D текста. GameObject --> Create Other --> 3D Text. Не забудьте развернуть их по оси Y на 180 градусов.

10. Расположите текст так, чтобы они были в середке кубиков. Текст можно вписать в Inspector --> Text Mesh --> Text.
Получилось вот что.


11. Выделите все объекты в Hierarchy и нажмите сочетание клавиш Ctrl+D.
12. Отодвиньте все объекты вправо и переименуйте текст в Fastest, Fantastic и Cancel.


13. Камеру находящаяся над главный меню назовите Camera1, а вторую, находящуюся над настройками графики, Camera2.
14. Создайте папочку Scenes нажатием ПКМ во вкладке Project. Create --> Folder.
15. Сохраните сцену под названием MainMenu и поместите ее в папку Scenes. File --> Save Scene.
Если все идеально, должно получится прямо как у меня.


Часть третья. Контроль текста.

16. Откройте скрипт TextControl и приготовьтесь писать.

17. Для начала давайте создадим переменную isNewGameButton, при которой объект будет загружать сцену.

18. Лучше не раскатывать тесто, и сразу выставить нужные переменные.

var isOptionsButton = false;
var isQualityButtonFastest = false;
var isQualityButtonFantastic = false;
var isMainMenuButton = false;
var isQuitButton = false;

19. Теперь давайте разберем самое интересное. При входе на объект курсора мыши, его материал моментально изменяется.

Смена материала на серый цвет при входе курсора будет осуществляться таким образом:

А возвращение материала в прежний вид при выходе курсора выглядит так:

20. Сейчас мы начнем делать нажатие на объекты.

Нажатие осуществляется через:

А чтобы занять чем-то нажатие, мы составим свойства для каждой переменной.

Для начала возьмем переменную IsQuitButton:

Теперь возьмем переменную ужасной графики.

else if ( isQualityButtonFastest )


Примечание: else дает возможность работать в OnMouseUp() много раз. А QualitySettings.currentLevel = QualityLevel.Fastest изменяет графику на уровне.

else if ( isQualityButtonFantastic )

Теперь возьмем переменную загрузки уровня.

else if ( isNewGameButton )


Примечание: Application.LoadLevel () дает возможность загружать уровень. А число в скобках пишут для точной загрузки нужного левела.

21. Теперь поработаем с камерами. Создайте новые две переменные:

А теперь продолжите таким образом:

else if ( isOptionsButton )

camera1.enabled = false;
camera2.enabled = true;
>


Примечание: Мы работаем с нажатием, и таким образом, когда вы щелкаете на кнопке Options, первая камера отключается, а вторая начинает функционировать.

22. Ну и последнее что нам нужно, это возвращение из игры в меню.

else if ( isMainMenuButton )

Добавьте в конце закрывающуюся скобку >.

var isNewGameButton = false;
var isOptionsButton = false;
var isQualityButtonFastest = false;
var isQualityButtonFantastic = false;
var isMainMenuButton = false;
var isQuitButton = false;
var camera1:Camera;
var camera2:Camera;

//color.X - any color that you like
renderer.material.color = Color.gray;

//color.X - any color that you like
renderer.material.color = Color.white;

>
else if ( isQualityButtonFastest )

>
else if ( isQualityButtonFantastic )

>
else if ( isNewGameButton )

//it can be any level
Application.LoadLevel (1);

>
else if ( isOptionsButton )

camera1.enabled = false;
camera2.enabled = true;
>
else if ( isMainMenuButton )

//main menu level
Application.LoadLevel (0);
>
>

Часть четвертая. Сборка меню.

24. Назначьте готовый скрипт ко всем кнопкам в сцене.
25. Теперь смотрим в Inspector --> Text Control (Script) и разбираем.

Для начала выберите кубик с New Game и поставьте галочку Is New Game Button.
Затем щелкните кубик с Options и поставьте галку Is Options Button. А еще в поле Camera 1 вставьте первую камеру, а в поле Camera 2, вторую.
На кубике Quit галку Is Quit Button.

Сейчас мы переходим на место с настройками. Выделите куб Fastest и поставьте галочку Is Quality Button Fastest. Так же Fantastic, но уже Is Quality Button Fantastic.
Выделите кнопку Cancel, поставье галочку Is Options Button, и вставьте в поле Camera 1 вторую камеру, а в поле Camera 2, первую.
Примечание: Почему? Потому-что нам нужен обратный процесс.

Для загрузки сцены (1), то есть, Is New Game Button, при компиляции, выставьте уровень под нужным вам числом. И не забудьте изменить значение в скрипте!

Так же, если потребуется выйти из уровня обратно в меню, используйте переменную Is Main Menu Button.

26. Теперь посмотрим что получилось.

Если все в порядке, значит я не зря писал данный урок
А если возникли какие-то проблемы, пишите, помогу всем, чем смогу.
Спасибо за внимание, с вами был Валентин. Желаю успехов в игрострое!

Ну а в следующем уроке я расскажу, как улучшить меню в плане возможностей

0

Поправьте если ошибаюсь, но для того что бы проверить созданное меню, требуется еще одна сцена-та самая "NewGame", на которую программа будет переходить при нажатии соответствующего элемента?
Кроме того, у меня в скрипте висит ошибка относительно камер: то ли не привязаны, то ли не так привязаны, в уроке насчет этого никаких подробностей.

Игровой форум GFAQ.ru


Разработка компьютерных игр. С чего начать? Это просто! С нуля до разработчика игр: как начать создавать свою игру. Заказать создание игры.

Какие кнопки, текст, выпадающие списки и т. Д. Можно увидеть во время игры? Все это является частью того, что называется пользовательским интерфейсом (UI). Большинство игр имеют своего рода пользовательский интерфейс, который позволяет игрокам легче переключаться между уровнями и активировать определенные элементы управления (например, приостановка игры или перезапуск уровня). В предыдущей статье, описывающей, как создать Dodger в Unity, мы создали маленькую кнопку, чтобы обновить игру, если игрок проиграл.

В этом уроке мы собираемся перейти на следующий уровень и позволить пользователям приостанавливать или перезапускать игру и переключаться между различными сценами. Мы также рассмотрим, как отображать определенные элементы интерфейса только в определенное время, например, когда игра приостановлена ​​или когда игрок умирает / проигрывает.

Элементы пользовательского интерфейса

Завершенную игру можно сыграть на itch.io.

Создание основного экрана паузы

Экран паузы имеет общий набор элементов управления, которые игроки могут использовать для перезапуска уровня, возврата в главное меню или для приостановки игры. Экраны паузы должны быть видны только тогда, когда игра приостановлена. В Unity мы, как правило, можем различать игру с Time.timescale и без паузы, используя Time.timescale . Если временной масштаб равен нулю, игра приостанавливается. Если оно больше нуля, игра не приостанавливается (мы обсудим это позже). Давайте начнем!

Создание текста паузы

Во-первых, нам нужно создать заголовок, который сообщает игроку, что игра приостановлена. Мы должны создать текстовый объект, щелкнув правой кнопкой мыши на панели иерархии и выбрав UI -> Text. Давайте назовем только что созданный объект PauseText.

Нам нужно создать заголовок, который сообщает игроку, что игра приостановлена. Мы должны создать текстовый объект, щелкнув правой кнопкой мыши на панели иерархии и выбрав UI -> Text. Давайте назовем только что созданный объект PauseText.

PauseText

Давайте отрегулируем размещение нашего текста. Текст паузы должен быть центрирован горизонтально на экране и находиться примерно в верхней трети игрового экрана. Текст паузы можно перемещать, изменяя значения X и Y внутри атрибута Rect Transform или используя четырехсторонние стрелки в элементах управления мыши в верхнем левом углу редактора Unity. При необходимости или желании мы также можем изменить размер текста, изменив значение и изменив размер атрибутов width и height (в разделе Rect Transform).

Создание приостановленных кнопок

Так как мы создали текст паузы и добавили новый тег для игровых объектов, который должен появляться, когда игра приостановлена, мы можем начать создавать кнопки, которые будут составлять меню приостановленной игры.

Мы будем создавать три разные кнопки: кнопку воспроизведения, кнопку перезагрузки и кнопку главного меню. Кнопка воспроизведения отключит игру, кнопка перезапуска перезапустит игру, а кнопка главного меню вернет игроков на сцену главного меню игры.

PauseButtons

Давайте откроем скрипт UIManager, который был создан в последнем уроке. Мы должны отредактировать наш скрипт UIManager так, чтобы он выглядел как код ниже.

Теперь, когда у нас есть код, который нам нужен в скрипте UIManager, мы можем вернуться к Unity. В Unity давайте выберем кнопку воспроизведения и прикрепим к ней метод pauseControl. Для этого мы можем выбрать кнопку воспроизведения и перетащить игровой объект UIManager в пространство игровых объектов под OnClick() на панели инспектора. Добавив игровой объект UIManager, мы теперь можем использовать второй выпадающий список для выбора функции pauseControl (UIManager -> pauseControl).

Скрипт паузы в Unity5

Уроки

Cкрипт Паузы в Unity 5.

Пауза, при создании любой игры, является неотъемлемой частью интерфейса. Через меню паузы можно реализовать такие функции игры как:

  • сохранение или загрузка,
  • выход в меню или на рабочий стол,
  • переход в меню настройки игры,
  • или просто остановка игры.

Здесь все просто. Две переменные, одна из которых будет при нажатии на ESC останавливать время, а вторая, при остановке времени будет выводить на экран кнопки меню.

Весь скрипт построен, по сути, на одной функции :

TimerScale является, как бы, своеобразными часами которые при значении 1 работают в нормальном режиме и время проходит как обычно, при значении 0,5 время замедляется в 2 раза, а при значении 0 время вообще останавливается. Этим и воспользуемся для создания паузы.

создание паузы в Unity5

UGUI Визуальное создание и объединениесобытиеОчень удобное, динамическое создание может быть создано с использованием созданного Prefab, но это немного сложно в связанных событиях. Эта статья суммирует несколькокнопкаКак связаны события привязки.

1. Создание визуализации и привязка событий

Шаг 1: Создать с помощью панели Иерархия UI > Button .

612a529903eeef992f37483ca512c5bd.jpe

Шаг 2. Создайте сценарий TestClick.cs, который определяет открытый метод Click.

Шаг 3: Выберите кнопку в иерархии, Add Component Скрипт TestClick.cs

Шаг 4: В Button(Script) Свяжите метод Click в сценарии TestClick.

2146363246d20b9842215d4adf16d45e.jpe

2. Свяжите события, напрямую связав скрипт

Шаг 1: Создать с помощью панели Иерархия UI > Button .

Шаг 2. Создайте сценарий ClickHandler.cs, определите закрытый метод OnClick (), добавьте прослушиватель события click для Button в методе Start () и передайте его в метод OnClick в качестве параметра.

Шаг 3: Привязать ClickHandler к объекту Button.

6b615cab6ff357178c4bb46d2aa70b7f.jpe

В системе UGUI Button обеспечивает по умолчанию только метод вызова OnClick, иногда нам нужно отслеживать мышь в событии (MouseIn) и mouse out (MouseOut). Для достижения этого нам необходимо использовать скрипт EventTrigger в системе пользовательского интерфейса.

Шаг 1: Создать с помощью панели Иерархия UI > Button .

Шаг 2. Создайте сценарий EventTriggerHandler.cs и используйте UnityEngine.EventSystems.EventTrigger для добавления событий мониторинга.

Шаг 3: Привязать сценарий EventTriggerHandler.cs к кнопке.

1cf48fbceda96772c9baf45e66613786.jpe

4. Реализовать мониторинг событий через MonoBehaviour для реализации интерфейса событий.

Шаг 1: Создать с помощью панели Иерархия UI > Button .

Шаг 2: Создайте сценарий EventHandler.cs.

Шаг 3: Привязать скрипт к объекту Button.

8e15b694234bc976150b27ed843235cc.jpe

Как UGUI определяет, какая кнопка мыши нажата при нажатии на элемент пользовательского интерфейса? В приведенном выше коде мы можем отслеживать, является ли это левой кнопкой мыши или правой кнопкой в ​​соответствии с eventData.pointerId. Однако каждый элемент пользовательского интерфейса создает MonoBehaviour для мониторинга различных событий, что, очевидно, не очень хорошо. Далее следует использовать Delegate и Event для создания общего класса UIEventListener для обработки событий (режим наблюдателя).

720ed69ea50d76c1c8560a5e24691814.jpe

Скрипт TestEvent может быть привязан к кнопке.

Читайте также: