Підручник головного меню для Unity

Інтерфейс користувача (UI) поєднує графіку, текст і кнопки та відіграє вирішальну роль у забезпеченні приємних ігор.

Головне меню є однією з найпомітніших частин інтерфейсу користувача, оскільки зазвичай це перше, що бачать гравці під час завантаження гри.

У цьому підручнику я покажу, як створити головне меню в Unity за допомогою UI Canvas.

Крок 1: Створіть головне меню

  • Створіть нове полотно (GameObject -> UI -> Canvas)

Unity Create Canvas

  • Створіть нове зображення, клацнувши правою кнопкою миші Canvas -> UI -> Image (це буде фон меню)

Unity Create Image in Canvas

  • Призначте текстуру новоствореному зображенню. Ви можете використати зображення нижче (клацніть правою кнопкою миші -> Зберегти як...) і переконайтеся, що для його типу текстури встановлено 'Sprite (2D and UI)' у налаштуваннях імпорту:

  • Створіть новий сценарій, назвіть його SC_BackgroundScaler і вставте в нього наведений нижче код:

SC_BackgroundScaler.cs

using UnityEngine;
using UnityEngine.UI;

[ExecuteInEditMode]
public class SC_BackgroundScaler : MonoBehaviour
{
    Image backgroundImage;
    RectTransform rt;
    float ratio;

    // Start is called before the first frame update
    void Start()
    {
        backgroundImage = GetComponent<Image>();
        rt = backgroundImage.rectTransform;
        ratio = backgroundImage.sprite.bounds.size.x / backgroundImage.sprite.bounds.size.y;
    }

    // Update is called once per frame
    void Update()
    {
        if (!rt)
            return;

        //Scale image proportionally to fit the screen dimensions, while preserving aspect ratio
        if(Screen.height * ratio >= Screen.width)
        {
            rt.sizeDelta = new Vector2(Screen.height * ratio, Screen.height);
        }
        else
        {
            rt.sizeDelta = new Vector2(Screen.width, Screen.width / ratio);
        }
    }
}
  • Прикріпіть сценарій SC_BackgroundScaler до щойно створеного зображення. (Після прикріплення сценарій автоматично масштабує фонове зображення відповідно до розміру екрана):

Створення кнопок меню:

  • Клацніть правою кнопкою миші Canvas -> Create Empty, а потім перейменуйте його на "MainMenu". Цей об’єкт міститиме елементи інтерфейсу користувача для головного меню.
  • Створіть новий текст, клацнувши правою кнопкою миші на об’єкті "MainMenu" -> UI -> Text. Це буде текст заголовка.
  • Змініть текст на назву вашої гри (у моєму випадку це буде "Game Title"):

  • Змініть вирівнювання абзацу по центру та колір на білий:

  • Нарешті, змініть розмір шрифту на більший (наприклад, 30) і стиль шрифту на жирний.

Однак ви помітите, що текст зник, тому що розміри Rect Transform замалі. Змініть їх на щось більше (наприклад, Ширина: 400 Висота: 100), також перемістіть їх трохи вгору, змінивши позицію Y на 50:

  • Створіть 3 кнопки (клацніть правою кнопкою миші на об’єкті "MainMenu" -> UI -> кнопка 3 рази) і перемістіть кожну кнопку вниз на 30 пікселів.
  • Змініть текст кожної кнопки на "Play Now", "Credits" і "Quit" відповідно:

  • Скопіюйте об’єкт "MainMenu" і перейменуйте його на "CreditsMenu", видаліть усі кнопки всередині нього, крім кнопки "Quit", і змініть його текст на "Back".
  • Змініть розмір шрифту заголовка Text in "CreditsMenu" на менший (наприклад, 14), змініть його Pos Y на 0 і введіть текст титрів.

Крок 2: Програмуйте кнопки меню

Тепер нам потрібно зробити кнопки функціональними, створивши сценарій.

  • Створіть новий сценарій, назвіть його SC_MainMenu, а потім вставте в нього наведений нижче код:

SC_MainMenu.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SC_MainMenu : MonoBehaviour
{
    public GameObject MainMenu;
    public GameObject CreditsMenu;

    // Start is called before the first frame update
    void Start()
    {
        MainMenuButton();
    }

    public void PlayNowButton()
    {
        // Play Now Button has been pressed, here you can initialize your game (For example Load a Scene called GameLevel etc.)
        UnityEngine.SceneManagement.SceneManager.LoadScene("GameLevel");
    }

    public void CreditsButton()
    {
        // Show Credits Menu
        MainMenu.SetActive(false);
        CreditsMenu.SetActive(true);
    }

    public void MainMenuButton()
    {
        // Show Main Menu
        MainMenu.SetActive(true);
        CreditsMenu.SetActive(false);
    }

    public void QuitButton()
    {
        // Quit Game
        Application.Quit();
    }
}
  • Приєднайте SC_MainMenu до об’єкта Canvas
  • Призначте об’єкт "MainMenu" до змінної головного меню
  • Призначте об’єкт "CreditsMenu" до змінної меню кредитів

Останнім кроком є ​​прив’язування функцій SC_MainMenu до кожної кнопки.

  • Виберіть кнопку та натисніть (+) у "On Click ()", щоб додати нову змінну елемента:

  • Призначте об’єкт зі сценарієм SC_MainMenu (Canvas) кнопці "On Click ()" та виберіть функцію, яка відповідає кнопці («PlayNowButton()» для кнопки «Грати зараз», "CreditsButton()" для кнопки «Кредити», "QuitButton()" для кнопки «Вийти» та "MainMenuButton()" до кнопки «Назад» у меню «Титри».

Тепер головне меню готове.

ПРИМІТКА. Функція PlayNowButton() у SC_MainMenu.cs спробує завантажити сцену під назвою "GameLevel". Тому переконайтеся, що у вас є сцена з назвою "GameLevel", яка також додається до налаштувань збірки (як альтернатива, ви можете змінити назву в цьому рядку, щоб вона відповідала назві сцени, яку ви хочете завантажити).

Хочете дізнатися більше про створення інтерфейсу користувача? Перегляньте наш підручник Як створити мобільні сенсорні елементи керування в Unity.

Джерело
MainMenu.unitypackage149.67 KB