유니티 게임 시작화면 - yuniti geim sijaghwamyeon

많은 게임들이 게임 타이틀 화면에서 Press to Start 를 사용하곤 합니다.

저는 이것을 두 가지 방법으로 구현 해보았습니다.

1. 버튼을 클릭해서 넘어가는 방법

2. 캔버스 자체를 Update() 함수를 통해

클릭해서 넘어가는 방법

첫 번째. 버튼 클릭

1) 캔버스에 Press to Start Game Name 텍스트를 추가 후

Button을 넣어 크기를 조정해 한 캔버스를 꽉 채우기

유니티 게임 시작화면 - yuniti geim sijaghwamyeon

2) Script를 추가하여 다음과 같이 LoadGame()함수를 작성

(네임스페이스도 입력하기)

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

public class Title : MonoBehaviour
{
    public string SceneToLoad;
    
    public void LoadGame()
    {
        SceneManager.LoadScene(SceneToLoad);
    }
}​

3) Game Manager이라는 오브젝트를 만들고 스크립트를 그 이름에 끌어다 놓은 후

SceneToLoad 라는 string에 다음에 실행될 scene의 이름 넣기

4) 버튼의 On Click()이벤트에 오브젝트를 추가하고 LoadGame 함수 넣기

두 번째. Update()

1) Script를 생성하고 Update()함수 안에 소스코드 작성

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

public class Title : MonoBehaviour
{
    
    public string SceneToLoad;

    // Update is called once per frame
   
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            SceneManager.LoadScene(SceneToLoad);
        }

    }
}

마우스 클릭 입력은 아래 링크 참조

https://docs.unity3d.com/kr/530/ScriptReference/Input.GetMouseButtonDown.html

2) Canvas에 이 script를 끌어 놓은 후 SceneToLoad 라는 string에 다음에 실행될 scene의 이름 넣기

인프런에 있는 케이디님의 [유니티 3D] 실전! 생존게임 만들기 - Advanced 강의를 듣고 정리한 필기입니다. 😀
🌜 강의 들으러 가기 Click

🚀 타이틀 메뉴 씬 만들기

유니티 게임 시작화면 - yuniti geim sijaghwamyeon

기존에 내내 작업했던 “Sample” 씬의 이름을 GameStage로 변경하였고, 타이틀 메뉴 씬으로 쓸 새로운 씬 GameTitle을 생성해주었다. (우클 - Create - Scene)

🚀 타이틀 메뉴 UI 만들기

유니티 게임 시작화면 - yuniti geim sijaghwamyeon

유니티 게임 시작화면 - yuniti geim sijaghwamyeon

  • 캔버스 (WorldSpace 모드)
    • 패널 UI (검정색, 화면 다 덮을만큼 크게)
      • Title 텍스트
      • Start, Load, Exit 텍스트
        • 버튼 컴포넌트 추가

✈ 카메라 맞추기

유니티 게임 시작화면 - yuniti geim sijaghwamyeon

현재 씬 화면에 있는 상태 그대로를 메인 카메라가 찍게 하려면 메인 카메라 오브젝트를 누르고 Ctrl+Shift+F 단축키를 누르면 된다. 현재 씬에서 보고 있는 화면 그대로를 카메라가 찍게 된다.

✈ 버튼 애니메이션

3 개의 버튼에 모두 똑같이 적용해준다.

유니티 게임 시작화면 - yuniti geim sijaghwamyeon

버튼의 Transition을 Color Tint 에서 Animation으로 바꾼다. 그러면 밑에 “Audo Generate Animation” 버튼이 생긴다.

유니티 게임 시작화면 - yuniti geim sijaghwamyeon

이렇게 버튼에 자동으로 Animator 컴포넌트도 붙게 된다. 위에서 “Audo Generate Animation” 버튼을 통해 생성한 버튼 애니메이션 컨트롤러를 할당해준다.

유니티 게임 시작화면 - yuniti geim sijaghwamyeon

“Audo Generate Animation” 버튼을 누르고 애니메이션 컨트롤러를 생성하면 자동으로 이렇게 “Pressed”, “Highlighted” 등등 버튼과 관련된 애니메이션 클립들과 위와 같은 내용의 컨트롤러를 자동으로 만들어준다.

유니티 게임 시작화면 - yuniti geim sijaghwamyeon

버튼에 커서를 올렸을 때인 “Highlighted” 애니메이션 클립을 녹화하여 만들자. 버튼에 커서를 올리면 자동으로 “Highlighted” 애니메이션 클립 재생이 되게끔 버튼 애니메이션 컨트롤러에 트랜지션이 짜여져 있다. 버튼에 커서를 올리면 10 프레임 때쯤 크기가 커진다. 애니메이션 재생으로 서서히 10프레임으로 갈 수록 커질 것이다.

유니티 게임 시작화면 - yuniti geim sijaghwamyeon

버튼을 눌렀을 때인 “Pressed” 애니메이션 클립을 녹화하여 만들자. 버튼을 누르면 자동으로 “Pressed” 애니메이션 클립 재생이 되게끔 버튼 애니메이션 컨트롤러에 트랜지션이 짜여져 있다. 버튼을 누르면 15 프레임 때쯤 크기가 더 커지고 투명해진다.(알파값 0) 애니메이션 재생으로 서서히 15프레임으로 갈 수록 투명해지고 커질 것이다.

유니티 게임 시작화면 - yuniti geim sijaghwamyeon

애니메이션 클립들은 반복 재생을 해제해준다.

📜Title

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

public class Title : MonoBehaviour
{
    public string sceneName = "GameStage";

    public void ClickStart()
    {
        Debug.Log("로딩");
        SceneManager.LoadScene(sceneName);
    }

    public void ClickLoad()
    {
        Debug.Log("로드");
    }

    public void ClickExit()
    {
        Debug.Log("게임 종료");
        Application.Quit();
    }
}

“GameTitle” 타이틀 메뉴 씬의 Canvas에 붙인다.

Start 버튼을 눌렀을 때 불러올 씬은 “GameStage” 씬. SceneManager.LoadScene 함수를 통해 씬의 이름을 넘겨주면 그 씬을 불러올 수 있다. CLickLoad 함수는 다음 포스트에서 구현.

🚀 씬 빌드 세팅

유니티 게임 시작화면 - yuniti geim sijaghwamyeon

File - Build Settings 에 빌드할 두 씬을 추가해준다. 꼭 추가해주어야 한다!!!


🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

Unity Lesson 3 카테고리 내 다른 글 보러가기