Unity 5: Меню проигрыша в 2D игре (Урок 12)

Этот урок описывает создание меню проигрыша в 2D игре на Unity 5. Мы создадим функциональное меню, отображающее рекорд, текущий счет и кнопки перезапуска игры и перехода на страницу Facebook.

Создание элементов меню и скрипта подсчета очков

Создадим текстовое поле «Record» для отображения рекорда (белый шрифт, центрированное выравнивание, размер адаптируется под различные разрешения). Также создадим C# скрипт GameScore для отслеживания и отображения счета.

В GameScore:

  • jumpCountBlocks (int, 0 по умолчанию): текущий счет.
  • gameStarted (bool, false по умолчанию): флаг начала игры.
  • record (int, 0 по умолчанию): текущий рекорд.
  • recordText (Text): ссылка на текстовое поле рекорда.

В функции Update(), если gameStarted == true, скрипт обновляет отображение счета и, если jumpCountBlocks > record, обновляет рекорд:

public class GameScore : MonoBehaviour
{
    public Text recordText;
    public int jumpCountBlocks = 0;
    public bool gameStarted = false;
    public int record = 0;

    void Update()
    {
        if (gameStarted)
        {
            // код обновления текущего счета
            if (jumpCountBlocks > record)
            {
                record = jumpCountBlocks;
                recordText.text = "Top: " + record.ToString();
            }
        }
    }
}

Кнопки меню и их функционал

Создадим кнопки «Restart» и «Facebook», разместим их над стандартными кнопками интерфейса и загрузим соответствующие спрайты.

В скрипте, управляющем игровым процессом, функция PlayerLose() активирует объекты с кнопками меню (с использованием ScrollRect для анимации). В скрипте Bottoms обработчики событий для кнопок:

  • «Restart»: SceneManager.LoadScene(SceneManager.GetActiveScene().name);
  • «Facebook»: Application.OpenURL("ваш_адрес_facebook");
public class Bottoms : MonoBehaviour
{
    public void OnClick()
    {
        GameObject button = UnityEngine.EventSystems.EventSystem.current.currentSelectedGameObject;
        if (button.name == "Restart")
        {
            SceneManager.LoadScene(SceneManager.GetActiveScene().name);
        }
        else if (button.name == "Facebook")
        {
            Application.OpenURL("ваш_адрес_facebook");
        }
    }
}

Мы создали функциональное меню проигрыша с отображением рекорда и счета, а также кнопками перезапуска и перехода на Facebook. Анимация и обработка событий реализованы с помощью скриптов Unity.

Что будем искать? Например,программа