Unity 2D: Как создать простое игровое меню

Исходная ситуация:

  1. У нас есть 2D игра.
  2. Нужно стартовое меню, через которое можно запустить игру или выйти из игры.
  3. Нужна возможность поставить игру на паузу.

Итак, по порядку:

  1. В Hierarchy создайте Creat Empty и назовите его допустим Game. Выделите всё, что касается самого игрового процесса и сделайте дочерним элементом Game. Это нужно для того, чтобы у нас была возможность отключать и включать отображение всех элементов игрового процесса.

  1. В Hierarchy создайте Creat Empty и назовите его допустим GameMenu. Зайдите в GameMenu и в Inspector-Canvas-Rendere Mode выберите Screen Space — Camera. Затем перетащите Main Camera из Hierarchy в Render Camera. Поправьте Order in Layer, чтобы кнопка была выше игровых слоев.
  2. Внутри GameMenu создайте UI-Panel. Внутри Panel создайте UI-Button. Это будет кнопка Pause, нажав на которую мы поставим игру на паузу и вызовем меню. Покопайтесь в настройках Panel и Button и оформите внешний вид.
  3. В Hierarchy создайте дубликат GameMenu и назовите его допустим PauseMenu. Создайте в нем кнопки Play, Exit, текстовый заголовок Menu, например. Pause тут нам не нужна, ее можно переименовать в Play или Exit или просто удалить.
  4. В 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();
}

}
  1. Открываем PauseMenu, в Inspector добавляем новый компонент, выбираем в списке наш MenuController.
  2. Открываем кнопку Exit. В Inspector внизу в OnClick нажимаем плюс, перетаскиваем в None наше меню PauseMenu из Hierarchy, выбираем MenuControls.ExitPressed. Должно получиться так.
  3. Выход из игры мы реализовали.
  4. Открываем кнопку Play. В Inspector в OnClick нажимаем +, перетаскиваем Game, про который говорил в п. 1. Выбираем рядом GameObject.SetActive. Ставим галочку. Это означает, что при клике на кнопку Play станут отображаться все объекты из Game.
  5. Теперь нам надо при клике отключать PauseMenu и включать GameMenu, чтобы кнопка Pause отображалась. Делаем все по аналогии по п. 9. См. рисунок выше, так должно получиться в итоге.
  6. Кнопка Play теперь у нас включает игровые объекты, кнопку Pause и выключает стартовое меню.
  7. Осталось запрограммировать кнопку Pause. Открываем ее и делаем следующие настройки, чтобы при клике на паузу отключались кнопка Pause, игровые объекты и включалось стартовое меню:
  8. Теперь для старта игры и проверки нужно включить/отключить соответствующие группы объектов. PauseMenu должен быть включен, GameMenu и Game выключены. Открываем соответствующую группу, в Inspector ставим или снимаем галочку:
  9. В итоге должно получиться примерно так:
  10. Я тут еще сгруппировал GameMenu и PauseMenu в Menu для удобства. Но это не обязательно. Enjoy!