
세이브 및 로딩 작업을 하다가 발견한 클래스, AsyncOperation 클래스입니다.
AsyncOperation asyncLoad = SceneManager.LadSceneAsync("MainScene");
// 진행률 (0.0 ~ 1.0, 단 씬 로딩은 0.9까지만)
float progress = asyncLoad.progress;
// 작업 완료 여부
bool isFinished = asyncLoad.isDone;
// 씬 자동 활성화 여부
asyncLoad.allowSceneActivation = false;
// 우선순위 설정 (높을수록 빠름)
asyncLoad.priority = ThreadPriority.High;
ResourceRequest request = Resources.LoadAsync<GameObject>("PlayerPrefab");
while (!request.isDone)
{
Debug.Log($"에셋 로딩: {request.progress * 100}%");
yield return null;
}
GameObject player = request.asset as GameObject;
AsyncOperation unloadOp = SceneManager.UnloadSceneAsync("OldScene");
AssetBundleCreateRequest bundleRequest = AssetBundle.LoadFromFileAsync(path);
IEnumerator LoadWithControl()
{
AsyncOperation asyncLoad = SceneManager.LoadSceneAsync("MainScene");
asyncLoad.allowSceneActivation = false; // 수동 제어
while (asyncLoad.progress < 0.9f) // 0.9까지만 로딩
{
loadingText.text = $"로딩: {asyncLoad.progress * 100:F0}%";
yield return null;
}
loadingText.text = "완료! 클릭하세요";
// 사용자 입력 대기
while (!Input.GetMouseButtonDown(0))
yield return null;
asyncLoad.allowSceneActivation = true; // 씬 활성화
}
이 클래스는 비동기 작업의 상태를 추적하고 제어하는 핵심 클래스입니다!