Unity 간단한 메인 메뉴와 옵션 메뉴 구현

2024. 12. 20. 01:23Unity

Unity 간단한 메인 메뉴와 옵션 메뉴 구현

게임의 메인 메뉴와 옵션 메뉴는 게임 플레이로 진입하기 전에 플레이어가 설정을 조정하거나 선택을 할 수 있도록 돕는 중요한 인터페이스입니다. Unity를 사용하면 UI 시스템을 활용하여 이러한 메뉴를 쉽게 구현할 수 있습니다. 이번 포스팅에서는 간단한 메인 메뉴와 옵션 메뉴를 만들어 보겠습니다.


1. 프로젝트 설정

1) 새 씬 생성

  • File > New Scene을 클릭하여 새로운 씬을 생성합니다.
  • 씬 이름을 MainMenu로 저장합니다.

2) UI Canvas 추가

  • Hierarchy 창에서 Create > UI > Canvas를 선택하여 UI를 위한 Canvas를 생성합니다.
  • 기본적으로 Canvas와 Event System이 함께 생성됩니다.

3) UI 레이아웃 구성

Canvas 안에 텍스트, 버튼, 슬라이더와 같은 UI 요소를 배치합니다.


2. 메인 메뉴 구현

1) 메인 메뉴 UI 구성

  1. 제목 텍스트 추가
    • UI > Text - TextMeshPro를 선택하여 제목을 추가합니다.
    • RectTransform을 사용해 화면 상단에 배치합니다.
  2. 버튼 추가
    • UI > Button을 선택하여 다음 버튼을 추가합니다:
      • Start Game
      • Options
      • Quit
  3. 각 버튼의 텍스트를 적절히 수정합니다.

2) 버튼 동작 연결

MainMenuManager 스크립트를 작성하여 버튼 동작을 처리합니다.

using UnityEngine;
using UnityEngine.SceneManagement;

public class MainMenuManager : MonoBehaviour
{
    public void StartGame()
    {
        // 게임 씬으로 이동
        SceneManager.LoadScene("GameScene");
    }

    public void OpenOptions()
    {
        // 옵션 메뉴 활성화
        Debug.Log("Options Menu Opened");
    }

    public void QuitGame()
    {
        // 애플리케이션 종료
        Debug.Log("Game Quit");
        Application.Quit();
    }
}
  1. 스크립트를 Canvas나 Empty Object에 추가합니다.
  2. 각 버튼의 OnClick() 이벤트에 위의 함수를 연결합니다.

3. 옵션 메뉴 구현

1) 옵션 메뉴 UI 구성

  1. Canvas 안에 빈 GameObject를 생성하고 이름을 OptionsMenu로 설정합니다.
    • OptionsMenu 안에 슬라이더(Slider)와 토글(Toggle)을 추가합니다.
    • 예:
      • 볼륨 슬라이더(Volume Slider)
      • 화면 모드 토글(Fullscreen Toggle)
  2. 기본적으로 OptionsMenu는 비활성화합니다.
    • Inspector > GameObject 활성화 상태를 비활성화합니다.

2) 옵션 메뉴 스크립트 작성

using UnityEngine;
using UnityEngine.UI;

public class OptionsMenuManager : MonoBehaviour
{
    public Slider volumeSlider;
    public Toggle fullscreenToggle;

    void Start()
    {
        // 초기 값 설정
        volumeSlider.value = AudioListener.volume;
        fullscreenToggle.isOn = Screen.fullScreen;
    }

    public void SetVolume(float value)
    {
        AudioListener.volume = value;
    }

    public void SetFullscreen(bool isFullscreen)
    {
        Screen.fullScreen = isFullscreen;
    }

    public void CloseOptionsMenu(GameObject optionsMenu)
    {
        optionsMenu.SetActive(false);
    }
}
  1. OptionsMenuManager를 OptionsMenu 객체에 추가합니다.
  2. 슬라이더와 토글의 OnValueChanged() 이벤트에 해당 함수 연결.

4. 메뉴 간 전환

1) 메인 메뉴에서 옵션 메뉴로 전환

  • Start GameQuit는 그대로 두고, Options 버튼을 누르면 OptionsMenu를 활성화합니다.

2) OptionsMenu 닫기 버튼

OptionsMenu 안에 Back 버튼을 추가하여 다시 메인 메뉴로 돌아갑니다.

public void OpenOptions(GameObject optionsMenu)
{
    optionsMenu.SetActive(true);
}
  • 버튼의 OnClick() 이벤트에 OptionsMenu 활성화/비활성화 함수 연결.

5. UI 디자인 팁

  1. 폰트와 색상
    • UI의 텍스트와 버튼에 일관된 폰트와 색상을 적용하여 메뉴가 깔끔하게 보이도록 합니다.
  2. 애니메이션 추가
    • Unity의 Animator를 사용해 버튼 클릭 시 간단한 애니메이션 효과를 추가할 수 있습니다.
  3. 사운드
    • 버튼 클릭 소리를 추가하여 사용자 경험을 향상시킵니다.
      • AudioSource를 Canvas에 추가하고 버튼 이벤트에 연결합니다.

6. 최종 구조 예시

Hierarchy 구조:

Canvas
├── MainMenu
│   ├── Title (TextMeshPro)
│   ├── StartButton (Button)
│   ├── OptionsButton (Button)
│   ├── QuitButton (Button)
├── OptionsMenu
│   ├── VolumeSlider (Slider)
│   ├── FullscreenToggle (Toggle)
│   ├── BackButton (Button)

7. 요약

Unity에서 메인 메뉴와 옵션 메뉴를 구현하는 과정은 간단하면서도 강력한 UI 시스템을 활용하는 방법을 보여줍니다.

  • 메인 메뉴를 통해 게임 시작, 옵션 열기, 종료 등의 기본 기능 제공.
  • 옵션 메뉴에서 볼륨, 화면 모드와 같은 설정 제어.
  • 버튼, 슬라이더, 토글을 사용하여 직관적인 사용자 경험 설계.