┌────────────┐ ┌──────────────┐ ┌───────────────────┐ ┌────────────────┐ │LoadingScene│ │assetbundleMgr│ │UI_ResourceDownload│ │BundleFileLoader│ └──────┬─────┘ └───────┬──────┘ └─────────┬─────────┘ └────────┬───────┘ │────┐ │ │ │ │ │ Start() │ │ │ │<───┘ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ EventStart() │ │ │ │<───┘ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ TitleSpineStart() │ │ │ │<───┘ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ start_BundleDownload() │ │ │ │<───┘ │ │ │ │ │ │ │ │ │ ╔════════════════════════════════════╗ │ │──────────────────────────────────────>│ ║assetbundleMgr의 인스턴스는 있지만 ░║ │ │ │ ║ini────┐ │ │ │ ╚═══ │ start_AssetBundle_Downloading() │ │ │ <───┘ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ 어셋번들 정보 다운로드 받기 │ │ │ │<───┘ CRT_download_AssetBundleInfo() │ │ │ │ ────┐ │ │ │ ┌┴┐ │ init() │ │ │ ╔════════════════════════════════╗ │ │ <───┘ │ │ │ ║BundleFileLoader를 만드는 역할 ░║ │ │ │ │ │ ║잘못된 함수 이름 사용 ║ │ │ │ │ │ ╚════════════════════════════════╝ │ │ │ │ │ │ │ │ │ │ │ │ ──────────────────────────────────────────────────────────────────>│ │ │ │ │ │ │ │ │ ╔═════════════╧════════════════════════════╗ │ │ │┌┴┐ ║아래 3개 이벤트 함수를 설정 ░║ │────┐ │ ││ │ ║FileDownloader.OnDownloadComplete ║ │ │ Initialize() │ ││ │ ║FileDownloader.OnDownloadProgressChanged ║ │<───┘ │ ││ │ ║FileDownloader.OnDownloadError ║ │ │ │└┬┘ ╚═════════════╤════════════════════════════╝ │ │ │ │ │ │ │ │ │ <──────────────────────────────────────────────────────────────────│ │ │ │ │ │ │ │ │ ────┐ │ │ │ │ │ │ CheckAssetUpdate() │ │ │ │ │ <───┘ │ │ │ │ │ │ │ │ │ │ ────┐ │ │ │ │ │ │ real_start_of_download() │ │ │ │ │ <───┘ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ───────────────────────────────────>│ │ │ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ │ StartDownload() │ │ │ │ │<───┘ │ │ │ │ │ │ │ │ │ │ │ │ ╔═══════╤════════╪═╪═════════════════════════════════════╪══════════════════════════════╪══════════════════════════════════════════════╗ │ ║ LOOP │ 번들 개수 만큼 │ │ ║ │ ╟───────┘ │ │ │ │ ║ │ ║ │ │ │────┐ │ ║ │ ║ │ │ │ │ DownloadAsset() │ ║ │ ║ │ │ │<───┘ │ ║ │ ║ │ │ │ │ ║ │ ║ │ │ DownloadAssetBundle() │ │ ║ │ ║ │ │ <───────────────────────────────────│ │ ║ │ ║ │ │ │ │ ║ │ ║ │ │ DownloadAssetBundle() │ ║ │ ║ │ │ ──────────────────────────────────────────────────────────────────>│ │ ║ │ ║ │ │ │ │ │ ║ │ ║ │ │ │ │ ┌──────────────┐ ║ │ ║ │ │ │ │──────────────────> │FileDownloader│ ║ │ ║ │ │ │ │ └───────┬──────┘ ║ │ ║ │ │ │ │OnDownloadProgressChanged() │ ║ │ ║ │ │ │ │<───────────────────────────│ ║ │ ║ │ │ │ │ │ ║ │ ║ │ │ │ 진행상황표시 │ │ ║ │ ║ │ │ │ onProgressCallback() │ │ ║ │ ║ │ │ │<─────────────────────────────│ │ ║ │ ║ │ │ │ │ │ ║ │ ║ │ │ │ │ OnDownloadError() │ ║ │ ║ │ │ │ │<───────────────────────────│ ║ │ ║ │ │ │ │ │ ║ │ ║ │ │ │ 에러나면 메시지 띄우고 종료 │ │ ║ │ ║ │ │ │ onErrorCallback() │ │ ║ │ ║ │ │ │<─────────────────────────────│ │ ║ │ ║ │ │ │ │ │ ║ │ ║ │ │ │ │ OnDownloadComplete() │ ║ │ ║ │ │ │ │<───────────────────────────│ ║ │ ║ │ │ │ │ │ ║ │ ║ │ │ │ onSuccessCallback() │ │ ║ │ ║ │ │ │ 성공하면 아래 과정 실행 │ │ ║ │ ║ │ │ │<─────────────────────────────│ │ ║ │ ║ │ │ │ │ │ ║ │ ║ │ │ │────┐ │ │ ║ │ ║ │ │ │ │ onSuccessCallback()에서 │ │ ║ │ ║ │ │ │<───┘ 다운로드 완료 체크 │ │ ║ │ ║ │ │ │ │ │ ║ │ ║ │ │ │ │ │ ║ │ ║ │ │ │────┐ │ │ ║ │ ║ │ │ │ │ 다운로드 미완료면 │ │ ║ │ ║ │ │ │<───┘ DownloadAsset() 호출 │ │ ║ │ ║ │ │ │ │ │ ║ │ ╚════════════════╪═╪═════════════════════════════════════╪══════════════════════════════╪════════════════════════════╪═════════════════╝ │ │ │ │ │ │ │ │ │ 다운로드 완료 │ │ │ │ │ │ <───────────────────────────────────│ │ │ │ │ │ │ │ │ │ │ │ ────┐ │ │ │ │ │ │ │ onDownloadCompleted() │ │ │ │ │ │ <───┘ │ │ │ │ └┬┘ │ │ │ │ │ │ │ │ │<──────────────────────────────────────│ │ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ │ onComplete_AssetBundleDownload() │ │ │ │ │<───┘ │ │ │ │ ┌──────┴─────┐ ┌───────┴──────┐ ┌─────────┴─────────┐ ┌────────┴───────┐ ┌───────┴──────┐ │LoadingScene│ │assetbundleMgr│ │UI_ResourceDownload│ │BundleFileLoader│ │FileDownloader│ └────────────┘ └──────────────┘ └───────────────────┘ └────────────────┘ └──────────────┘