Unity) Scene

댓글 0
댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요.
Hierarchy에 놓인 게임 오브젝트와 그 설정을 담아 둔 파일입니다.
목록에 등록하는 이유 :
코드로 씬을 불러오기 위해서는 Build Settings 목록에 등록되어 있어야 합니다.
코드 상에서 씬을 변경할때 Build Settings에 있는 Build Index나 "Title" 같은 string 타입인 씬 이름으로 변경할 수 있습니다.
C#은 형식이 많아 형식들을 성격별로 묶어 두는데, 그 묶음을 네임스페이스(namespace, 이름을 묶어두는 단위) 라고 합니다.
파일 맨 위의 using은 어느 묶음에 든 이름을 앞에 묶음 이름 없이 그대로 쓰겠다 라는 선언입니다.
먼저, SceneManager를 사용하기 위해서는
using UnityEngine.SceneManagement;
해당 네임스페이스를 먼저 선언해줘야합니다.
인자로 씬의 이름을 넘기거나, 빌드 인덱스를 넘겨줍니다.
SceneManager.LoadScene("Play");
SceneManager.LoadScene(1);
==LoadScene== 같은 경우 씬이 다음 프레임에 로드되며, 즉시 로드 되지 않다고 공식문서에 명시되어 있습니다.
따라서, Update 이벤트 함수 내에 있는 ==LoadScene== 바로 다음줄에서 새 씬의 오브젝트를 찾으려고 하면 동작하지 않습니다.
==LoadScene==은 두 번째 인자로 어떻게 부를지를 받습니다. 생략하면 ==LoadSceneMode.Single==입니다.
| 값 | 무엇을 하나 |
|---|---|
LoadSceneMode.Single | 열려 있던 씬을 닫고 새 씬을 엽니다 |
LoadSceneMode.Additive | 열려 있던 씬을 그대로 두고 새 씬을 겹쳐 엽니다 |
지금 활성 상태인 씬은 **SceneManager.GetActiveScene() ** 으로 가져옵니다.
활성 씬은 지금 화면에 보이는 씬이 아닌
새로 만들어지는 게임 오브젝트가 놓이는 곳이자 조명 설정의 출처로 정의되어있습니다.
씬이 바뀔때 그 씬에 있던 게임 오브젝트가 전부 사라집니다.
DontDestroyOnLoad 를 통해 게임오브젝트를 넘기면 그 오브젝트는 씬이 바뀌어도 사라지지 않습니다.
DontDestroyOnLoad(gameObject);
※ 단, 그 게임 오브젝트가 계층의 맨위, 부모가 없는 오브젝트여야 합니다.
Unity 면접 대비 입력, 카메라/이동/AI, 에셋/빌드
Unity 면접 대비 렌더링/그래픽, 메모리/최적화
Unity 면접 대비 애니메이션, UI