DOTY

[Unity] 6. Scene 변경 ( + DontDestroyOnLoad ) 본문

Unity

[Unity] 6. Scene 변경 ( + DontDestroyOnLoad )

증식세포 2022. 9. 7. 17:43
728x90
반응형

SceneManagement

Scene의 이름을 알아낼 때 사용된다.

SceneManager.GetActiveScene().name

Scene을 변경하는데도 사용된다. Numbering된 Scene을 불러오는 방법(1)과 Scene의 이름을 직접하는 방법(2)이 있다.

메인 Scene은 SampleScene이다.

☞ SampleScene에서 Inside로 변경

먼저 File -> Build Settings에 들어가서 Scene 변경을 하고싶은 모든 Scene을 Scenes In Build에 넣어둔다.

넣은 후에는 그냥 창 닫으면 되는듯 하다.

 

How to...

using UnityEngine.SceneManagement; // 추가해줄것.

void Update()
{
    SceneManager.LoadScene(1); // (1)
    SceneManager.LoadScene("Inside"); // (2)
}

(1)

가장 위부터 0(SampleScene), 1(Inside)로 자동으로 넘버링 되는 것으로 보인다.

1번인 Inside Scene으로 넘어가게 된다.

 

(2)

Inside라는 이름을 가진 Scene으로 넘어가게된다.

 

위의 내용만 달랑 써놓으면 1번 Inside Scene으로 자동으로 넘어가진다.

그냥 바뀌는 것을 원하면 그대로 쓰면 되지만 조건에 따라서 Scene을 변경하고 싶으면 OnTriggerEnter2D와 같은 함수와 같이 써주면 된다.


DontDestroyOnLoad

Scene이 변경될 때 Object가 사라지지 않도록 (데이터가 유지되도록) 해주는 함수

DontDestroyOnLoad(gameObject);

 

원하는 Object에다 위의 함수를 Awake() 함수에 넣어두면 Scene이 변경되도 게속 유지된다. 

실행을 하면 Hierarchy를 확인해보면 위 처럼 DontDestroyOnLoad라고 따로 생기고 그 안에 지워지지 않는 Object들이 생성된다.

728x90
반응형

'Unity' 카테고리의 다른 글

HpProgressBar 체력에 따라 색 바꾸기  (0) 2024.10.14
[Unity] err1. object reference not set to an instance of an object  (0) 2022.09.24
[Unity] 5. OnTriggerEnter(Exit)2D  (0) 2022.09.05
[Unity] 4. Tilemap  (0) 2022.09.03
[Unity] 3. Moving  (0) 2022.07.30
Comments