728x90
SMALL
지난 글에서 로비씬에서 UI추가 및 닉네임 저장관련을 했는데
이번글에선 연출효과(페이드 효과) 및 비동기 씬 전환에 대해 추가해주자.
비동기 씬 전환 (Asynchronous Scene Loading)
Unity의 비동기 씬 전환은 게임이 실행 중일 때 메인 스레드가 멈추지 않고 새 씬을 로드할 수 있도록 해주는 기능이다. 일반적으로 SceneManager.LoadSceneAsync 메서드를 사용하여 씬을 로드한다. 이 방식을 사용하면 로딩 중에도 게임이 계속 실행되며, 특히 로딩 화면이나 페이드 효과 같은 UX 요소를 추가할 때 유용하다.
주요 특징
- 점진적 로딩 : 씬이 한 번에 로드되지 않고, 로드 진행률(AsyncOperation.progress)에 따라 점진적으로 로드된다.
- 씬 활성화 지연 가능 : allowSceneActivation 속성을 사용하여 씬을 메모리에 로드한 후에도 사용자가 지정한 시점까지 씬 활성화를 보류할 수 있다.
- 프레임 단위 진행 : 비동기 방식으로 실행되므로 게임의 메인 루프는 멈추지 않는다.
비동기 씬 전환의 이점
- 부드러운 사용자 경험: 로딩 화면, 애니메이션 또는 페이드 효과와 결합하여 매끄러운 화면 전환을 제공한다.
- 프레임 유지: 메인 스레드가 멈추지 않으므로, 로딩 중에도 다른 작업(애니메이션, 입력 처리 등)을 수행할 수 있다.
- 효율적 리소스 관리: 씬 활성화를 지연하여 필요한 타이밍에만 씬을 보여줄 수 있다.
1. 사용할 페이드 이미지 생성
2. 로비 매니저에 페이드 이미지 추가
3. 페이드 효과 코드 추가
4. 페이드 적용 및 비동기 씬 전환
비동기 씬 전환을 사용하기 위해 네임스페이스 추가
아래 코드의 비동기 씬 전환 방식의 장점
- 페이드 효과와 연계 : 씬 전환 시 시각적 매끄러움을 제공하여 사용자 경험을 향상한다.
- 닉네임 저장과 비활성화 처리 : 닉네임 입력이 완료된 후 저장 및 UI 비활성화를 통해 로딩 중 사용자 입력을 방지한다.
- 씬 활성화 제어 : allowSceneActivation 속성을 활용해 페이드 효과 완료 후에만 씬을 활성화하여 로딩 완료 타이밍을 조정한다.
1. 비동기로 씬 로드
AsyncOperation async = SceneManager.LoadSceneAsync(sceneName);
- SceneManager.LoadSceneAsync(sceneName)를 호출하여 새로운 씬을 비동기로 로드한다.
- 이 작업은 즉시 시작되며 AsyncOperation 객체를 반환, 이를 통해 로드 진행률과 활성화 상태를 제어할 수 있다.
2. 씬 활성화 지연
async.allowSceneActivation = false;
- allowSceneActivation을 false로 설정하여 씬이 로드 완료된 후에도 자동으로 활성화되지 않도록 한다.
- 이는 로딩 애니메이션, 페이드 효과와 같은 작업을 수행한 후 직접 활성화할 수 있도록 한다.
3. 페이드 효과와 연계
yield return StartCoroutine(FadeIn());
async.allowSceneActivation = true;
- 페이드 인 효과를 실행(FadeIn)하여 화면 전환이 부드럽게 보이도록 한다.
- 페이드 인이 완료된 후, async.allowSceneActivation = true를 호출하여 씬을 활성화한다.
결과
728x90
'프로젝트 > 스네이크 프로젝트' 카테고리의 다른 글
[스네이크] - UI 표시(종료, 성공) 팝업 (0) | 2024.12.24 |
---|---|
[스네이크] - UI 표시(점수, 시간) (0) | 2024.12.17 |
[스네이크] - 로비 만들기(닉네임 생성 및 게임 시작) - 게임 시작 UI (1) | 2024.12.05 |
[스네이크] - 플레이어, 적 닉네임 표시 (0) | 2024.11.29 |
[스네이크] - 스네이크(플레이어, 적) Lv표시 [최적화] (0) | 2024.11.26 |