
씬을 추가하고, 씬을 바꾸는 방법을 알아본다
// 씬 매니저를 추가해야된다
using UnityEngine.SceneManagement;
namespace Unity
{
public class UnityScene : MonoBehaviour
{
public void ChangeScene()
{
SceneManager.LoadScene("SceneName");
}
public void AddScene()
{
SceneManager.LoadScene("SceneName", LoadSceneMode.Additive);
}
public void ChangeSceneASync()
{
// 비동기식으로 씬을 로드한다
// 반환형도 AsyncOperation
AsyncOperation operation = SceneManager.LoadSceneAsync("SceneName");
operation.allowSceneActivation = true; // 씬 로딩 완료시 바로 씬 전환을 진행하는지 여부
bool isLoaded = operation.isDone; // 씬 로딩의 완료여부 확인
float progress = operation.progress; // 씬 로딩의 진행률 확인
operation.completed += (oper) => { }; // 씬 로딩의 완료시 진행할 이벤트 추가
}
public void UnloadScene()
{
SceneManager.GetAllScenes(); // 현재 로딩 된 모든 씬 반환
Scene scene = SceneManager.GetSceneByName("씬이름"); // 씬이름을 반환
//씬이 로딩되어 있는지 판별 필요
if(scene.isLoaded ==true)
{
// 비동기식으로 열려 있는 씬을 닫기 - 언로드는 무조건 비동기식으로 사용한다
SceneManager.UnloadSceneAsync(scene);
}
}
public void SetDontDestroyOnLoad()
{
DontDestroyOnLoad(gameObject);
}
메트로베니아가 이런 식으로 구현된다록맨도 비슷하게 통로 문을 지날 때 다음맵을 불러오는 식이다참고
더티플래그





Hierarchy를 선택하면 프레임 마다 어떤 연산들이 수행되는지, 시간은 얼마나 걸리는지 알 수 있다
VS에서 Unity에 연결을 누르거나 유니티에서 아래와 같은 버튼을 누른다
Debug.LogWarning("주의");
Debug.LogError("에러");

유니티 에디터 상에서 더블클릭하면 해당 문구가 삽입된 스크립트로 이동한다