유니티 버전 - 2022.3.44f1
목차
- 씬(Scene)이란?
- Scene과 빌드 세팅
- SceneDirector의 코드 및 설명
- 코드
- 설명
- 마치며
- 간단 정리
- 참고하면 좋은 자료
Scene이란?
씬(Scene)이란 유니티에서 게임의 단일 장면을 의미합니다, 하나의 씬은 게임의 한 단계(레벨), 메뉴 화면 등 특정한 환경(게임 오브젝트와 구성요소)을 담고 있습니다, 씬에는 카메라, UI, 플레이어, 조명 등 다양한 요소가 포함될 수 있습니다
Build Setting은 게임을 배포하기 위한 설정을 관리하는 기능입니다, 여러가지 신경써야 할 것이 있지만 여기서는 Add Open Scenes를 이용하여 현재의 씬을 추가하고 순서를 지정하는 것만 하겠습니다
1. 버튼을 눌러 현재 열려있는 씬을 추가
1. 이동하고자하는 씬을 선택 후 드래그
2. 이동 후의 모습, 맨 우측의 숫자(Build Index)가 바뀌었음을 확인 할 수 있습니다
SceneDirector의 코드 및 설명
씬을 로드하기 위해서는 SceneManager.LoadScene을 사용합니다, 아래는 다양한 인수 타입을 이용해보았습니다
using 지시문
using UnityEngine;
using UnityEngine.SceneManagement; // SceneManager의 기능을 사용하기 위해 필요
1. LoadScene()
public void LoadScene()
{
SceneManager.LoadScene("SingletonScene");
}
1. 가장 기본적인 형식으로 인수로 씬의 이름을 넣습니다
2. Project의 Assets 아래의 씬의 이름입니다
2. LoadSceneUsingBuildIndex()
public void LoadSceneUsingBuildIndex(int p_BuildIndex)
{
SceneManager.LoadScene(p_BuildIndex);
}
씬의 빌드 인덱스를 이용하여 씬을 전환합니다, 빌드 인덱스는 Build Settings에서 확인 가능합니다
3. LoadSceneUsingEnum()
public void LoadSceneUsingEnum(SceneIndex p_SceneIndex)
{
SceneManager.LoadScene((int)p_SceneIndex);
}
미리 정의된 Enum타입을 이용하여 씬을 전환합니다
4. LoadNextScene()
public void LoadNextScene() // 주의
{
int currentBuildIndex = SceneManager.GetActiveScene().buildIndex;
SceneManager.LoadScene(currentBuildIndex + 1);
}
씬의 순서가 선형적이라면, 단순히 현재 빌드 인덱스에 1을 더하여 다음씬으로 이동합니다, 빌드 세팅에서 정의된 씬의 순서에 유의해야합니다
5. ReloadCurrentScene()
public void ReloadCurrentScene()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}
현재의 씬을 다시 로드합니다, 씬을 재시작하는 방법으로 다양한 인수를 사용할 수 있습니다
6. LoadSceneAdditively()
public void LoadSceneAdditively()
{
SceneManager.LoadScene("Scene Name", LoadSceneMode.Additive);
}
현재 씬을 유지한 채로 새로운 씬을 추가합니다
마치며
씬의 로드 방법을 알아보았습니다, 언로드 메서드를 이용하여 열린 씬을 닫을 수 도 있습니다
하지만 SceneManager.LoadScene을 이용하여 씬을 로드하거나 언로드할때에 동기적으로 작동하여 게임이 멈춘것처럼 보이거나 씬 간의 전환이 부드럽지않아 사용자 경험을 저하시킬 수 있습니다.
다음에는 비동기 씬 관리로 씬을 전환하는 중에도 게임이 원활하게 진행될 수 있도록 하는 법을 알아보겠습니다
이상입니다.
'코드 및 공부 > 씬' 카테고리의 다른 글
씬 전환시 해당씬의 CinemachineConfiner로 교체하기 (0) | 2024.12.23 |
---|---|
Instantiate시 오브젝트가 Addtive씬에 생기는 문제 (0) | 2024.12.11 |
씬의 이벤트 실행 순서(Awake, Start 이외) (0) | 2024.11.30 |