[유니티3D 개발] 버튼 클릭을 통해, Scene(씬) 전환하는 기능 구현

2022. 11. 4. 20:50·■ Dev. ETC/Unity 3D
반응형

0.  목적

유니티 3D를 통한 프로그램을 개발하다 보면 각 Scene 마다 이동해야 하는 일이 생긴다. 이번에는 Button 을 클릭했을 때, 적절한 Scene으로 전환될 수 있도록 SceneManager를 이용하는 방법을 알아보고자 한다.


1. 참고

본 포스트에서는 Unity Editor 2020.3.32f1 버전을 사용했으며, C# Script 편집을 위해 Visual Studio 2022 버전을 사용했다. 필자와 다른 버전을 사용할 경우, 미세하게 다른 부분이 있을 수도 있으니 참고하자.


2. Scene과 버튼 구성

간단한 Scene 을 2개 만들어 두었다. File → New Scene → Save As...를 통해 Scene을 추가적으로 만들 수 있다.

 

 

2-1. acredev1 Scene 구성

acredev1 이름의 Scene을 열고, Hierachy → + → UI → Button 을 클릭해 Button을 하나 추가한다.

 

 

 

부모 객체 Canvas의 자식 객체 Button으로 자동 생성된 모습이 확인된다. Scene이 전환되는 모습을 직관적으로 확인할 수 있게 필자는 Button과 Button Text의 Inspector 속성값을 아래와 같이 부여했다. Scene 전환이 잘 되는지 직관적으로 확인해 보기 위함이므로, 본인의 상황에 맞게 조치하면 된다.

 

구분 속성값
Canvas → Button Rect Transform Pos X 0
Pos Y 0
Pos Z 0
Image Color [HEX] #89FF00
Canvas → Button → Text Text Font Size 50

 

2-2. acredev2 Scene 구성

마찬가지로 동일하게, Hierachy → + → UI → Button 을 클릭하면 부모 객체 Canvas의 자식 객체 Button이 자동적으로 생성된다. acredev2.scene의 Button과 Button Text의 Inspector 속성값은 아래와 같이 부여했다.

 

구분 속성값
Canvas → Button Rect Transform Pos X 0
Pos Y 0
Pos Z 0
Image Color [HEX] #00D0FF
Canvas → Button → Text Text Font Size 50

 

 

2-3. Scene 빌드 세팅 (Build Settings)

상단 메뉴의 File → Build Settings... 를 클릭한다. 또는, 단축키 Ctrl + Shift + B를 이용해 Build Settings 화면에 접근한다.

 

 

 

Project 카테고리의 Scenes 폴더에 위치한, 작업했던 Scene들을 Scenes In Build 항목에 드래그 & 드롭을 통해 추가하고 화면을 닫는다.

 

 


3. C# Script 작성

Project의 Assets폴더에 Scripts폴더를 하나 만들고, 폴더 내부에 SceneChanger 이름의 C# Script 파일을 생성한다. C# Script 이름은 필자와 달라도 상관 없지만, C# Script 파일 이름과 코드의 class 이름이 동일해야 에러가 발생하지 않으니 유의하자.

 

※ C# Script 이름은 SceneManager.cs 가 되면 안 된다. 자세한 내용은 아래▼를 참고하자.

 

[Unity] 유니티 오류해결: SceneManager에는 LoadScene에 대한 정의가 포함되어 있지 않습니다. (CS0117)

0. 목적 유니티에서 SceneManager 메서드를 통해 Scene 전환 기능 구현 시 발생하는 오류 해결방법에 대해 알아보자. using UnityEngine.SceneManagement; 참조를 했음에도 발생하는 오류이다. 1. 원인 나도 사실

acredev.tistory.com

 

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement; // SceneManager를 사용하기 위한 참조

UnityEngine.SceneManagement; 를 참조한다. Scene 전환을 위해서는 SceneManager 메서드를 사용해야 하는데, 해당 메서드를 사용하기 위해 필요한 참조문이다.

 

 

 

public class SceneChanger : MonoBehaviour
{
    public void acredev1SceneChange()
    // acredev1SceneChange 이름의 함수 선언
    {
        SceneManager.LoadScene("acredev1");
        //SceneManager 메서드의 LoadScene 함수를 통해 acredev1.scene으로 씬 전환
    }
    public void acredev2SceneChange()
    // acredev2SceneChanger
    	SceneManager.LoadScene("acredev2");
        //SceneManager 메서드의 LoadScene 함수를 통해 acredev2.scene으로 씬 전환
    }
}

SceneChanger 클래스 내부에 Scene 전환 기능을 수행할 public void 형식의 함수를 선언한다. 함수의 이름은 마음대로 지정해도 상관 없지만, 내가 알아볼 수 있도록 직관적이게 짓는 것이 좋다.

 

C# Script 작성이 완료되면 Ctrl + S 단축키를 통해 C# Script 파일을 저장하고, Unity 화면으로 다시 돌아온다.


SceneManager 메서드?

 

▣ SceneManager.LoadScene("Scene이름");

SceneManager의 LoadScene에 Scene이름을 지정해서 Scene전환 기능을 수행한다.

▣ SceneManager.LoadScene("Scene번호");

SceneManager의 LoadScene에 Scene번호를 지정해서 Scene전환 기능을 수행한다.

Scene 번호는 Build Settings 에 접근하면 확인할 수 있다.

 

▣ 전체 스크립트 코드

더보기
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class SceneChanger : MonoBehaviour
{
    public void acredev1SceneChanger()
    {
        SceneManager.LoadScene("acredev1");
    }

    public void acredev2SceneChanger()
    {
        SceneManager.LoadScene("acredev2");
    }
}

4. Button에 C# Scripts 속성 부여 / OnClick 속성 부여

acredev1.scene으로 진입해, 작성한 SceneChanger C# Script를 Button에 드래그 & 드롭해 Object에서 C# Script를 사용하기 위한 속성을 부여한다.

 

 

 

Button의 Inspector 탭에서, 스크롤을 내려 OnClick () 항목으로 진입한다. OnClick() 메서드의 속성값은 아래와 같이 부여한다.

 

※ acredev1.scene의 Button은 acredev2.scene으로 전환되는 버튼이다.

 

OnClick() 속성 값
Runtime Editor And Runtime
Function SceneChanger → SceneChanger.acredev2SceneChanger()
Object Button

OnClick() 속성값의 역할은?

▣ Runtime 선택

Runtime 속성 종류 값 설명
Off 작동하지 않는다.
Editor And Runtime Unity 에디터 화면과, 프로젝트 빌드 파일에서도 작동한다.
Runtime (기본 선택값) 프로젝트 빌드 파일에서만 작동한다.

▣ Function

Unity에서 기본으로 제공되는 Function들도 있지만, 최하단으로 내려보면 우리가 추가한 C# Script 파일명과 함수명을 선택할 수 있다. 버튼을 눌렀을 때 동작할 기능을 선택하는 부분이다.

▣ Object

해당 이벤트가 발생할 GameObject를 선택한다. 우리는 Button을 클릭 시 (OnClick) 발생할 이벤트를 구현하는 중이므로, Button 으로 지정해 주면 된다.

 

 

 

acredev2.scene에도 동일하게 속성을 부여한다. 대신, acredev2.scene의 버튼은 acredev1.scene으로 전환하기 위한 버튼이므로 OnClick()의 Function은 SceneChanger.acredev2SceneChange() 함수로 부여해야 한다는 사실은 이해했으리라 생각한다.

 

 

 


5. 프로젝트 파일 다운로드

참고용으로 배포한다. 필자와 에디터 버전이 다를 경우, 에러가 나거나 정상적인 기능 실행이 되지 않을 수도 있으니 다른 에디터 버전을 이용하는 사람은 참고하자.

 

▣ 빌드된 파일

더보기
[Build] Pratice_ButtonSceneChange.z01
19.53MB
[Build] Pratice_ButtonSceneChange.zip
2.44MB
※ 파일 크기 떄문에 분할 압축해서 업로드 했으므로, 압축 해제시 모든 파일을 내려받은 후 압축 해제 해야함.

▣ 빌드되지 않은 프로젝트 원본 파일

더보기
[Pratice] ButtonSceneChange.z01
19.53MB
[Pratice] ButtonSceneChange.z02
19.53MB
[Pratice] ButtonSceneChange.zip
13.06MB
※ 파일 크기 때문에 분할 압축해서 업로드 했으므로, 압축 해제시 모든 파일을 내려받은 후 압축 해제 해야함.

6. 실행 결과

정상적으로 Scene 이 전환되는 모습을 확인할 수 있다. Scene 전환 기능은 여러 상황에서 상당히 유용하게 사용할 일이 많으니, 잘 알아두면 좋을 것 같다.

300x250
반응형
저작자표시 비영리 변경금지
'■ Dev. ETC/Unity 3D' 카테고리의 다른 글
  • [Unity3D 개발] 키보드 방향키로 플레이어 움직임과, 1인칭 카메라 시점이동 구현하기
  • [Unity3D 기초] 3D 오브젝트에 Material 속성으로 간단한 색상 입히기
Min Hyuk-Lee
Min Hyuk-Lee
시스템 엔지니어로 근무하고 있습니다.
  • Min Hyuk-Lee
    아크레의 개발로그
    Min Hyuk-Lee
    m_file@naver.com
  • 전체
    오늘
    어제
    • 📝 Log. (81)
      • ■ Dev. Language (11)
        • C (5)
        • C# (6)
      • ■ Dev. ETC (8)
        • Unity 3D (3)
        • Android Studio (JAVA) (5)
      • ■ Web (6)
        • HTML (3)
        • JSP (3)
      • ■ Linux (8)
        • Shell (2)
        • Linux Tip. (6)
        • 보안취약점 진단 (0)
      • ■ Windows (4)
        • Server (1)
        • Windows Tip. (3)
      • ■ VM (1)
        • VMWare (1)
        • Virtual Box (0)
      • ■ Database (9)
        • MySQL (7)
        • OracleDB (2)
      • ■ DevKit (5)
        • IDE (4)
        • Tool (1)
      • ■ Error (17)
        • Linux 오류해결 (4)
        • DB 오류해결 (3)
        • IDE 오류해결 (2)
        • VM 오류해결 (3)
        • Unity 오류해결 (4)
        • SSH, SFTP 오류해결 (1)
      • ■ Photoshop (3)
        • 디자인&이미지 창작 (3)
      • ■ Document (3)
        • MS Word (2)
        • PDF (1)
      • ■ Study (4)
        • Baekjoon (4)
      • ■ 작문 (1)
        • 회고 (1)
      • ■ ETC (1)
        • Car (0)
        • etc (1)
  • 🌐 Menu

    • 📓 Guestbook
  • 🔗 Other Links

    • GitHub
    • 아크레의 IT ISSUE
  • 📢 Notice

    • [스킨 업데이트] hELLO v4.10.0 적용완료
    • [스킨 업데이트] hELLO v4.9.0 적용 완료
    • [스킨 업데이트] hELLO v4.8.1 적용 완료
  • 💬 Recent Comments

  • hELLO· Designed By정상우.v4.10.0
Min Hyuk-Lee
[유니티3D 개발] 버튼 클릭을 통해, Scene(씬) 전환하는 기능 구현
상단으로

티스토리툴바