UNITY/Script

[UNITY C#] SceneManagement 씬 전환 구현

HYEOKJUN 2022. 2. 15. 18:00
반응형

SceneLoader.cs

using UnityEngine.SceneManagement;

/// <summary>
/// Scene을 불러오는 정적 클래스입니다.
/// </summary>
public static class SceneLoader
{
	/// <summary>
	/// 마지막으로 방문했던 Scene의 이름입니다.
	/// </summary>
	static string sceneName_lastVisited; 
	
	/// <summary>
	/// Scene을 불러옵니다.
	/// </summary>
	/// <param name="sceneName">불러올 Scene의 이름입니다.</param>
	public static void LoadScene(string sceneName) {
		sceneName_lastVisited = SceneManager.GetActiveScene().name; // 마지막 씬 이름을 저장합니다
		SceneManager.LoadScene(sceneName); // 씬을 로드합니다.
	}

	/// <summary>
	/// 마지막으로 방문했던 Scene을 불러옵니다.
	/// </summary>
	/// <param name="sceneName_fallback">마지막으로 불러올 Scene이 없을 경우 불러올 Scene의 이름입니다.</param>
	public static void LoadLastScene(string sceneName_fallback = "") {
		try {
			LoadScene(sceneName_lastVisited); // 마지막으로 로드했던 씬을 불러옵니다.
		} catch {
			LoadScene(sceneName_fallback); // 불러오는데 실패시 sceneName_fallback 씬을 불러옵니다.
		}
	}
}

위와 같이 SceneLoader를 생성합니다.


씬 로드 Scripting

SceneLoader.LoadScene("scene_name_here");

마지막으로 방문했던 씬을 로드하기 위해서 다음과 같이 사용합니다.


마지막 씬 로드 Scripting

SceneLoader.LoadLastScene("fallback_scene_name_here");

sceneName_fallback은 지정해 주지 않아도 되지만 앱의 유연성을 위해서 지정해 주는 것이 좋습니다.

반응형