본문 바로가기
ぺ Let's do it ぺ/⒈유니티(Unity3d)

[별아재군/unity3d] 유니티 UI 버튼을 활용하여 간단한 씬전환 어플 만들기..

by 망고부인 2021. 8. 24.
728x90

지난번 초기 해상도 설정에 이어서..

유니티 UI 버튼을 활용하여 간단한 씬전환 어플 만들기

 

일단 기본 개념은..

씬 전환을 위해서..

1. 타이틀 씬과 메뉴 씬이 있어야 하고

2. 씬 전환을 실행해야할 버튼이 있어야 합니다.

 

로그인, 새게임, 불러오기 등을 작업했던..

샘플씬을 이제 타이틀씬이라고 변경 합니다.

타이틀 씬으로 변경하고 나서 

새로운 메뉴 씬을 만들어야 겠죠..

파일 > 새로운 씬 선택..

우리는 계속 2D 작업을 해야 하니까..

새로운 씬이 생성되면..

이번에는 처음부터 씬 이름을 메뉴로 변경하세요..

씬 새로 저장하기..

메뉴 씬으로 저장

씬파일은 Scene 폴더에 함께 이동/보관하고

복수의 씬이 존재할 경우,

어플 실행시 어떤 씬이 먼저 나타나는지 설정을 해주어야 함

현재, Scene 폴더에 TitleScene이 먼저 등록되어 있고

MenuScene를 드래그하여 두번째 자리로 이동

오른쪽에 씬 우선순위가 나타남

씬정리가 끝나면 X를 클릭

TitleScene를 더블클릭하여

타이틀씬으로 이동

이제 씬에서 각 버튼들이 작동할 수 있도록

스크립트를 작성해 줘야 함

TitleDirector 스크립트를 더블클릭하면

비쥬얼 스튜디오 2019가 실행됨

아래와 같이 문장을 삽입, 수정해 준다.

타이틀씬에서 메뉴씬으로 전환하기 위해서는

상단에 SceneManagement를 추가해 줘야하고

 

void Start()

{

}

하단에 아래와 같이 코딩을 한다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement; // LoadScene을 사용하기 위해서 필요!! 

public class TitleDirector : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {

    }

    // 버튼 오브젝트 링크 함수
    public void OnClickNewGame()
    {
        Debug.Log("새 게임");
        SceneManager.LoadScene("MenuScene");
    }

    public void OnClickLoadGame()
    {
        Debug.Log("불러오기");
        SceneManager.LoadScene("MenuScene");
    }

    public void OnClickQuitGame()
    {
#if UNITY_EDITOR
UnityEditor.EditorApplication.isPlaying = false;
#else
        Application.Quit();
#endif 
    }
}

 

버튼을 클릭했을때 메뉴씬으로 이동하게 하는 함수를 코딩한다.

차후체 새게임은 세이브파일을 초기화하는 방법을 추가할 것이다.

그전까지. Debug 화면에 함수가 잘 실행되는지 표시토록 한다.

유니티 C#에서 스크립트만으로는 아무런 작동을 하지 않는다.

프로그램 내에 오브젝트에 컨포런트로 등록을 해줘 하는데

오브젝트가 액션을 취하게 되는데..

각 버튼 오브젝트에 각각의 스트립트를 작성해서 등록할 수도 있지만.

 

Empty 오브젝트를 생성에서

여기에 각 버튼이 액션해야할 스크립트를 연동시켜 주는 것이 더 효율적이다.

 

먼저 Empty 오브젝트를 생성한다.

Empty 오브젝트는 프로그램 상에서 실제 보이지는 않는다.

다만, 씬 안에서 전체를 감독하고 조정하는 역할을 하는 오브젝트이다.

TitleDirector 스크립트는 TitleDirector 오브젝트에 드래그하여 구성시킨다.

각 버튼의 전체 선택하고..

TitleDirector 오브젝트를 OnClick 펑션에 드래그 한다.

이제 TitleDirector 오브젝트와 각 버튼 오브젝트가 연동 되었다.

Bt_End 버튼이 클릭되면

TitleDirector 오브젝트 안에 OnClickQuitGame 함수를 호출하도록 연동시킨다.

그렇게 나머지 새게임, 불러오기 버튼도 동일하게 연동시킨다.

 

그리고 메뉴씬으로 전환하고..

아래와 같이 배경, 제목, Home버튼을 구성해 본다.

Free Aspect, Canvas Scaler 등등 모두 다 변경해야 한다.

타이틀씬에서처럼

메뉴씬에서도 Home 버튼을 클릭하면

다시 타이틀 씬으로 이동하도록 스크립트를 작성하고

빈 오브젝트를 생성하고 연동 시킨다.

자~ 이제 실행을 시켜보자..

새게임, 불러오기, Home 버튼을 눌러보고

게임종료를 클릭해서 어플이 정상적으로 종료되는지 확인해 보자

기본적인 버튼 구성과 씬 전환을 실습해 봤다.

다음에는

배경이미지 움직이기

본격적인 메뉴 버튼 생성하기 등을 해볼 예정이다..

오늘은 여기까지..

 

오늘 실습은 
베르의 UGUI 기초 | 유니티 유튜브가 많이 도움됐어요..

https://youtu.be/LooUj77MVSU

필요하신분은 참고하세요.. 

도움이 되셨다면 좋아요!! 구독 꾹!! ㅎㅎ

728x90

댓글