본문 바로가기
[ Unity ]/- 유니티 실습

유니티 Loading Scene

by MRG 2024. 9. 18.
728x90
반응형

 

 

▣ 로딩씬을 생성하고 LodingSlider를 생성하고 제작합니다.

그리고 Build Settings에서 씬 3개를 추가합니다. 

 

 

▣  SceneManager.LoadSceneAsync: 비동기적으로 씬을 로드하는 함수.
AsyncOperation.allowSceneActivation: 로딩이 완료되었을 때 씬을 자동으로 활성화할지 여부를 설정하는 속성.
Slider.value: Slider UI의 현재 값을 설정하거나 가져오는 속성.
SceneManager.UnloadSceneAsync: 비동기적으로 씬을 언로드하는 함수.


▣ FindLoadingSliderInScene()
역할: 로딩 씬에서 LoadingSlider라는 이름을 가진 Slider UI 오브젝트를 찾고, 이를 loadingSlider 변수에 할당합니다.
GameObject.Find("LoadingSlider"): 유니티 씬 내에서 특정 이름을 가진 오브젝트를 찾는 함수입니다. 해당 오브젝트가 비활성화된 상태라면 찾지 못하므로, 로딩 씬 내에서 해당 오브젝트가 활성화된 상태여야 합니다.
GetComponent(): 찾은 오브젝트에서 Slider 컴포넌트를 가져옵니다. 이 컴포넌트를 통해 슬라이더의 값을 업데이트할 수 있습니다.

▣   LoadLoadingSceneAndNextScene()
역할: 로딩 씬(LoadingScene)과 실제 게임 씬(NextScene)을 비동기적으로 로드하며, 로딩 진행 상태를 슬라이더로 표시하는 코루틴입니다.
이 함수는 씬을 비동기적으로 로드하기 때문에 게임이 멈추지 않고 계속 진행되며, 로딩 화면과 슬라이더가 표시됩니다.

▣  함수 설명:
SceneManager.LoadSceneAsync("LoadingScene", LoadSceneMode.Additive):
비동기적으로 로딩 씬을 로드합니다. LoadSceneMode.Additive는 기존 씬을 유지하면서 추가로 씬을 로드할 수 있는 모드입니다.

loadingSceneOp.allowSceneActivation = false;:
로딩이 완료되더라도 자동으로 씬이 활성화되지 않도록 설정합니다. 이 코드를 통해 슬라이더를 업데이트하는 시간을 가질 수 있습니다.

loadingSlider.value = nextSceneOp.progress;:
NextScene의 로딩 진행도를 슬라이더에 반영합니다. progress는 0부터 1까지의 값으로, 로딩 상태를 나타냅니다.
SceneManager.UnloadSceneAsync("LoadingScene"):
로딩이 완료되면 로딩 씬을 비동기적으로 언로드하여 메모리에서 해제합니다.



▣   SceneManager.LoadSceneAsync()
역할: 지정된 씬을 비동기적으로 로드하는 함수입니다. 이 함수는 게임을 멈추지 않고 백그라운드에서 새로운 씬을 로드하며, 로딩 중에도 다른 작업을 계속할 수 있습니다.

주요 기능:
SceneManager.LoadSceneAsync("NextScene"): NextScene을 비동기적으로 로드하며, 이 과정에서 로딩 진행 상태를 AsyncOperation.progress를 통해 확인할 수 있습니다.
LoadSceneMode.Additive는 씬을 기존 씬과 함께 로드할 때 사용하며, 기존 씬을 유지한 채 추가 씬을 로드할 수 있습니다.

▣   SceneManager.UnloadSceneAsync()
역할: 비동기적으로 씬을 언로드(해제)하는 함수입니다. 씬을 메모리에서 제거하여 리소스를 해제할 수 있습니다.

주요 기능:
SceneManager.UnloadSceneAsync("LoadingScene"): 로딩이 완료된 후, 로딩 씬을 비동기적으로 언로드하여 게임에 불필요한 씬을 메모리에서 해제합니다.

▣ Slider
역할: 유니티 UI에서 슬라이더(바 형태)를 표시하는 UI 요소입니다. 로딩 중에는 슬라이더의 값을 로딩 진행도에 맞춰 업데이트하여 시각적으로 로딩 상태를 표시할 수 있습니다.

주요 기능:
loadingSlider.value: 슬라이더의 값을 설정하여, 로딩 진행 상황에 맞춰 슬라이더가 업데이트됩니다.
슬라이더는 0에서 1까지의 값을 가질 수 있으며, 이를 통해 로딩 퍼센트를 표시할 수 있습니다.

 

 

 

 

https://docs.unity3d.com/ScriptReference/GameObject.Find.html

 

Unity - Scripting API: GameObject.Find

This function only returns active GameObjects. If no GameObject with name can be found, null is returned. If name contains a '/' character, it traverses the hierarchy like a path name. For performance reasons, it is recommended to not use this function eve

docs.unity3d.com

https://docs.unity3d.com/ScriptReference/SceneManagement.SceneManager.LoadSceneAsync.html

 

Unity - Scripting API: SceneManagement.SceneManager.LoadSceneAsync

You can provide the full Scene path, the path shown in the Build Settings window, or just the Scene name. If you only provide the Scene name, Unity loads the first Scene in the list that matches. If you have multiple Scenes with the same name but different

docs.unity3d.com

https://docs.unity3d.com/ScriptReference/AsyncOperation-allowSceneActivation.html

 

Unity - Scripting API: AsyncOperation.allowSceneActivation

 

docs.unity3d.com

https://docs.unity3d.com/ScriptReference/SceneManagement.SceneManager.UnloadSceneAsync.html

 

Unity - Scripting API: SceneManagement.SceneManager.UnloadSceneAsync

The given Scene name can either be the full Scene path, the path shown in the Build Settings window or just the Scene name. If only the Scene name is given this will unload the first Scene in the list that matches. If you have multiple Scenes with same nam

docs.unity3d.com

https://docs.unity3d.com/ScriptReference/UI.Slider-value.html

 

 

728x90
반응형

'[ Unity ] > - 유니티 실습' 카테고리의 다른 글

유니티 Camera Following  (1) 2024.09.19
유니티 PauseMenu  (9) 2024.09.18
유니티 GameSettingsUIManager  (1) 2024.09.17
유니티 Camera Shake  (0) 2024.09.15
유니티 Single RayCast, Multi RayCast  (1) 2024.09.14

댓글