2026-04-17 로딩바 완성

This commit is contained in:
skrwns304@gmail.com
2026-04-17 01:19:02 +09:00
parent 55e644f34e
commit 25e7b5bf4d
14 changed files with 202 additions and 13 deletions

View File

@@ -1,4 +1,5 @@
using System;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.SceneManagement;
@@ -7,6 +8,7 @@ public class SceneLoadManager : MonoBehaviour
{
public static SceneLoadManager Instance;
[SerializeField] private GameObject _loadingRoot;
[SerializeField] private Camera _loadingCam;
[SerializeField] private Transform _loadingCamTargetTransform;
[SerializeField] private LoadingScreen _loadingScreen;
@@ -30,6 +32,15 @@ private void Start()
SceneManager.sceneLoaded += OnSceneLoaded;
}
private void Update()
{
if(_loadingCamTargetTransform != null)
{
_loadingCam.transform.position = _loadingCamTargetTransform.position;
_loadingCam.transform.rotation = _loadingCamTargetTransform.rotation;
}
}
private void OnSceneLoaded(Scene scene, LoadSceneMode mode)
{
// 씬이 로드될 때마다
@@ -56,13 +67,16 @@ public async Awaitable FadeLoadingCanvas(bool isOut,float fadeTime)
public async Task SetSceneLoadingActive(bool isActive,float alphaTime)
{
if (isActive)
_loadingRoot.SetActive(true);
if(alphaTime > 0f)
if (alphaTime > 0f)
{
await FadeLoadingCanvas(!isActive,alphaTime);
}
_loadingScreen.gameObject.SetActive(isActive);
if (!isActive)
_loadingRoot.SetActive(false);
}
public void SetSceneLoadingActive(bool isActive)
@@ -90,7 +104,7 @@ private async Awaitable SceneChange(string sceneName)
{
try
{
await SetSceneLoadingActive(true,2f);
await SetSceneLoadingActive(true,1f);
AsyncOperation op = SceneManager.LoadSceneAsync(sceneName);
@@ -133,7 +147,7 @@ private async Awaitable SceneChange(string sceneName)
//VR용 로직
//트래킹이 중단되면 안되기 때문에 카메라를 유지해야 한다
_loadingCamTargetTransform = Camera.main.transform; // 새로운 씬의 메인카메라를 따라가게끔 설정
await SetSceneLoadingActive(false,2f);
await SetSceneLoadingActive(false,1f);
//-------------------------------------------------------------------------------
Debug.Log("씬 전환됨");