유니티 씬 전환하는 방법
유니티 개발을 하다보면 Scene을 이동해야 하는 경우가 반드시 존재한다. 기본적인 마우스 클릭 만으로 씬을 전환하는 간단한 방법을 구현했다. 가장 먼저 해주어야 할 세팅은 File - Build Setting에서 전환시킬 씬들을 업로드해주는 것이다.
씬들을 드래그앤드롭으로 가져오기만 하고, 따로 build는 해줄 필요 없다.
Create Empty를 생성 해 ChgScene 스크립트를 작성하여 연결해주면 된다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class ChgScene : MonoBehaviour
{
void Update()
{
if (Input.GetMouseButtonDown(0))
{
SceneManager.LoadScene(1);
}
if (Input.GetMouseButtonDown(1))
{
SceneManager.LoadScene("Test03");
}
}
}
함수 SceneManger를 사용하기 위해서는 반드시 using UnityEngine.SceneManagement; 을 작성해주어야 한다.
LoadScene() 메서드는 Integer형식과 String형식 둘다 쓸 수 있다. 즉, Integer형식으로 쓰려면 배열 번호에 맞게 첫번째 씬은 0, 두번째 씬은 1 이런식으로 입력해주면 되고, String을 사용하려면 저장한 씬 이름을 직접 작성해주면 된다.
만약 Play모드에서 키보드 동작으로만 씬들을 전환하려면 다음과 같이 설정하면 된다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class ChangeScene : MonoBehaviour
{
int curIdx = 0;
void Update()
{
if (Input.GetKeyDown(KeyCode.RightArrow))
{
curIdx = SceneManager.GetActiveScene().buildIndex;
print(curIdx);
if (curIdx < 65)
{
SceneManager.LoadScene(++curIdx);
}
}
else if (Input.GetKeyDown(KeyCode.LeftArrow))
{
curIdx = SceneManager.GetActiveScene().buildIndex;
print(curIdx);
if (curIdx > 0)
{
SceneManager.LoadScene(--curIdx);
}
}
}
}
build setting에서 씬들을 업로드하면 위 사진처럼 오른쪽에 0부터 인덱스 값을 할당받게 된다. 인덱스 값을 가져오기 위해 int curIdx = 0 변수를 가져왔고, if 조건문을 사용해 오른쪽 방향키를 입력하면 다음 씬으로. 왼쪽 방향키를 입력하면 이전 씬으로 전환하게 만들었다. 그리고 작업한 씬이 총 66개 였기 때문에(인덱스값 0~65) 1번 씬 이전, 66번 씬 이후는 동작되지 않도록 조건문을 중첩해서 작성해주었다.
'게임 프로그래밍 > 유니티 프로젝트' 카테고리의 다른 글
유니티 Line Renderer 설정하기 및 오류 해결 (0) | 2021.10.28 |
---|---|
유니티 Ray/RaycastHit 충돌 체크 (0) | 2021.10.28 |
유니티 UI Layout Group 종류 및 옵션 값 설정하기 (0) | 2021.10.22 |
유니티 Slider 한계시간 설정 코드 및 컴파일러 에러 해결 (0) | 2021.10.21 |
유니티 오브젝트 자동 spawn하는 방법 (0) | 2021.10.21 |