Unity용 메인 메뉴 튜토리얼

사용자 인터페이스(UI)는 그래픽, 텍스트, 버튼을 결합하여 즐거운 게임 경험을 제공하는 데 중요한 역할을 합니다.

메인 메뉴는 일반적으로 플레이어가 게임을 로드할 때 가장 먼저 보게 되는 UI이기 때문에 UI에서 가장 눈에 띄는 부분 중 하나입니다.

이 튜토리얼에서는 UI 캔버스를 사용하여 Unity에 메인 메뉴를 만드는 방법을 보여 드리겠습니다.

1단계: 메인 메뉴 디자인

  • 새 캔버스를 만듭니다(GameObject -> UI -> Canvas).

Unity 생성 캔버스

  • 캔버스 -> UI -> 이미지를 마우스 오른쪽 버튼으로 클릭하여 새 이미지를 만듭니다(메뉴 배경이 됩니다).

Unity 캔버스에서 이미지 생성

  • 새로 생성된 이미지에 텍스처를 할당합니다. 아래 이미지를 사용하고(마우스 오른쪽 버튼 클릭 -> 다른 이름으로 저장...) 가져오기 설정에서 텍스처 유형이 '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);
        }
    }
}

메뉴 버튼 만들기:

  • 캔버스 -> 빈 만들기를 마우스 오른쪽 버튼으로 클릭한 다음 이름을 "MainMenu"로 바꿉니다. 이 개체에는 기본 메뉴의 UI 요소가 포함됩니다.
  • "MainMenu" 개체 -> UI -> 텍스트를 마우스 오른쪽 버튼으로 클릭하여 새 텍스트를 만듭니다. 제목 텍스트가 됩니다.
  • 텍스트를 게임 이름으로 변경합니다(제 경우에는 "Game Title"입니다).

  • 단락 정렬을 가운데 가운데로 변경하고 색상을 흰색으로 변경합니다.

  • 마지막으로 글꼴 크기를 더 큰 값(예: 30)으로 변경하고 글꼴 스타일을 굵게 변경합니다.

그러나 Rect Transform 크기가 너무 작기 때문에 텍스트가 사라진 것을 알 수 있습니다. 더 큰 것으로 변경하고(예: 너비: 400 높이: 100) Pos Y를 50으로 변경하여 약간 위로 이동합니다.

  • 3개의 버튼을 만들고("MainMenu" 개체를 마우스 오른쪽 버튼으로 클릭 -> UI -> 버튼을 3번 클릭) 각 버튼을 30픽셀씩 아래로 이동합니다.
  • 각 버튼의 텍스트를 각각 "Play Now", "Credits" 및 "Quit"로 변경합니다.

  • "MainMenu" 객체를 복제하고 이름을 "CreditsMenu"으로 바꾸고, "Quit" 버튼을 제외하고 내부의 모든 버튼을 제거하고, 텍스트를 "Back"로 변경합니다.
  • "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를 캔버스 개체에 연결
  • 주 메뉴 변수에 "MainMenu" 개체를 할당합니다.
  • "CreditsMenu" 개체를 크레딧 메뉴 변수에 할당

마지막 단계는 SC_MainMenu 기능을 각 버튼에 바인딩하는 것입니다.

  • 버튼을 선택하고 "On Click ()"에서 (+)를 클릭하여 새 요소 변수를 추가합니다.

  • SC_MainMenu 스크립트(캔버스)를 사용하여 개체를 버튼 "On Click ()"에 할당하고 버튼에 해당하는 기능을 선택합니다(지금 재생 버튼의 경우 "PlayNowButton()", 크레딧 버튼의 경우 "CreditsButton()", 종료 버튼의 경우 "QuitButton()" 및 "MainMenuButton()" - 크레딧 메뉴의 뒤로 버튼).

이제 메인 메뉴가 준비되었습니다.

참고: SC_MainMenu.cs의 PlayNowButton() 함수는 "GameLevel"이라는 장면 로드를 시도합니다. 따라서 이름이 "GameLevel"인 장면이 있는지 확인하세요. 이 장면은 빌드 설정에도 추가됩니다(또는 로드하려는 장면의 이름에 해당하도록 해당 줄의 이름을 변경할 수도 있습니다).

UI 생성에 대해 더 자세히 알고 싶으십니까? Unity에서 모바일 터치 컨트롤을 만드는 방법에 대한 튜토리얼을 확인하세요.

원천
📁MainMenu.unitypackage149.67 KB
추천 기사
개요형 Unity용 미니맵 튜토리얼
Unity의 UI 시스템 작업
Unity에서 일시 정지 메뉴 만들기
Unity에서 고압 세척기 폼 효과 만들기
Unity용 객체 글로우 효과 튜토리얼
Unity용 분할 화면 동일 PC 멀티플레이어 튜토리얼
Unity용 나이트 비전 이미지 효과 후처리 튜토리얼