Исходная ситуация:
- У нас есть 2D игра.
- Нужно стартовое меню, через которое можно запустить игру или выйти из игры.
- Нужна возможность поставить игру на паузу.
Итак, по порядку:
- В Hierarchy создайте Creat Empty и назовите его допустим Game. Выделите всё, что касается самого игрового процесса и сделайте дочерним элементом Game. Это нужно для того, чтобы у нас была возможность отключать и включать отображение всех элементов игрового процесса.
- В Hierarchy создайте Creat Empty и назовите его допустим GameMenu. Зайдите в GameMenu и в Inspector-Canvas-Rendere Mode выберите Screen Space — Camera. Затем перетащите Main Camera из Hierarchy в Render Camera. Поправьте Order in Layer, чтобы кнопка была выше игровых слоев.
- Внутри GameMenu создайте UI-Panel. Внутри Panel создайте UI-Button. Это будет кнопка Pause, нажав на которую мы поставим игру на паузу и вызовем меню. Покопайтесь в настройках Panel и Button и оформите внешний вид.
- В Hierarchy создайте дубликат GameMenu и назовите его допустим PauseMenu. Создайте в нем кнопки Play, Exit, текстовый заголовок Menu, например. Pause тут нам не нужна, ее можно переименовать в Play или Exit или просто удалить.
- В Project создаем New Script. Назовем его MenuContoller. Пишем следующий код:
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class MenuControls : MonoBehaviour { public void ExitPressed() { Application.Quit(); } }
- Открываем PauseMenu, в Inspector добавляем новый компонент, выбираем в списке наш MenuController.
- Открываем кнопку Exit. В Inspector внизу в OnClick нажимаем плюс, перетаскиваем в None наше меню PauseMenu из Hierarchy, выбираем MenuControls.ExitPressed. Должно получиться так.
- Выход из игры мы реализовали.
- Открываем кнопку Play. В Inspector в OnClick нажимаем +, перетаскиваем Game, про который говорил в п. 1. Выбираем рядом GameObject.SetActive. Ставим галочку. Это означает, что при клике на кнопку Play станут отображаться все объекты из Game.
- Теперь нам надо при клике отключать PauseMenu и включать GameMenu, чтобы кнопка Pause отображалась. Делаем все по аналогии по п. 9. См. рисунок выше, так должно получиться в итоге.
- Кнопка Play теперь у нас включает игровые объекты, кнопку Pause и выключает стартовое меню.
- Осталось запрограммировать кнопку Pause. Открываем ее и делаем следующие настройки, чтобы при клике на паузу отключались кнопка Pause, игровые объекты и включалось стартовое меню:
- Теперь для старта игры и проверки нужно включить/отключить соответствующие группы объектов. PauseMenu должен быть включен, GameMenu и Game выключены. Открываем соответствующую группу, в Inspector ставим или снимаем галочку:
- В итоге должно получиться примерно так:
- Я тут еще сгруппировал GameMenu и PauseMenu в Menu для удобства. Но это не обязательно. Enjoy!