씬을 로드할때 곧바로 씬을 전환했는데 씬이 무거울경우 로딩시간일 걸리는데 화면이 멈춘상태로 유지됩니다. 현재씬을 유지한채로 로딩을 진행한후 로딩후 씬을 로딩하는 방법을 해보겠습니다. 진행 슬라이드바도 표시해보겠습니다.
로그인->로딩화면->본게임으로 진행하기 위해 로딩화면을 만들어보겠습니다.
새로운 씬을 만들고 LoadingScene이라는 이름으로 저장합니다.
UI>Image를 추가하고 검정색으로하고 확장시켜 화면을 채웁니다.
Slider를 추가하고 Handle Slide Area는 삭제합니다.
슬라이드 칼라는 노란색으로 합니다.
배치는 아래쪽 중간으로 합니다.
진행퍼센티지를 나타낼 텍스트도 추가해줍니다.
LoadingNextScene 라는 스크립트를 추가합니다.
.LoadSceneAsync()에서 얻은 객체 ao로 진행상황을 모니터링할수 있습니다.
ao.IsDone이 아니면 상태를 표시하고 90%가 넘으면 비활성화된 ao를 활성화해 다음씬2번을 표시합니다.
실패시 yeild return null;을 실행 다음프레임까지 대기 합니다.
using System.Collections;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class LoadingNextScene : MonoBehaviour
{
public int sceneNumber = 2;
public Slider loadingBar;
public Text loadingText;
float time = 0f;
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
StartCoroutine(TransitionNextScene(sceneNumber));
}
IEnumerator TransitionNextScene(int num)
{
AsyncOperation ao = SceneManager.LoadSceneAsync(num);
ao.allowSceneActivation = false;
while (!ao.isDone)
{
time += Time.deltaTime;
//loadingBar.value = ao.progress;
loadingBar.value = time / 1f;
loadingText.text = (ao.progress * 100f).ToString() + "%";
//if (ao.progress >= 0.9f)
if (time > 1f)
{
ao.allowSceneActivation = true;
}
yield return null;
}
}
}
스크립트를 넣을 빈오브젝트 LoadManager를 만들어 스크립트를 넣어주고 변수들을 UI 슬라이더 텍스트등을 끌어다 연결해줍니다.
파일>빌드를 열어 현재씬을 추가하고 1번으로 만들어 줍니다. 그런 로그인 화면에서 로그인을 클릭시 1번화면이 로딩됩니다.
로그인씬을 로딩한후 실행해보면 로딩이 너무 빨라 보이지가 않습니다. 그래서 코드에 1초 타이머를 추가해서 시뮬레이션 했습니다.
[Unity] 씬을 전환할 때 로딩을 걸어보자 - 씬 비동기 로딩, 로딩창 구현
유니티에서 게임을 만들 땐, 여러 방법이 있겠지만, 씬을 여러개를 두고 전환해야되는 일이 생기기 마련이다. 보통 처음 유니티를 배울 땐, 씬 로딩을 UnityEngine.SceneManagement에 포함되어있는 SceneM
freeedeveloper.tistory.com
GameManager.cs의 RestartGame()의 로딩도 비동기로 처리하겠습니다.
public class GameManager : MonoBehaviour
{
public void RestartGame()
{
Time.timeScale = 1f;
//SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
SceneManager.LoadScene(1);
}
이걸로 FPS게임이 마무리 되었습니다.
'인생유니티 > FPS게임' 카테고리의 다른 글
로그인 화면과 비동기 씬로드 - 기능구성 코드 (0) | 2025.04.26 |
---|---|
로그인 화면과 비동기 씬로드 - 화면UI (0) | 2025.04.26 |
옵션UI제작 (0) | 2025.04.25 |
무기 모드 추가및 효과 적용 (0) | 2025.04.24 |
Navigation (0) | 2025.04.24 |