┌────────────┐ ┌──────────────┐ ┌───────────────────┐ ┌────────────────┐ │LoadingScene│ │assetbundleMgr│ │UI_ResourceDownload│ │BundleFileLoader│ └─────┬──────┘ └──────┬───────┘ └─────────┬─────────┘ └───────┬────────┘ │────┐ │ │ │ │ │ Start() │ │ │ │<───┘ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ EventStart() │ │ │ │<───┘ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ TitleSpineStart() │ │ │ │<───┘ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ start_BundleDownload() │ │ │ │<───┘ │ │ │ │ │ │ │ │ │ ╔═════════════════════════════════╧══╗ │ │ ────────────────────────────────────> ║assetbundleMgr의 인스턴스는 있지만 ░║ │ │ │ ║in────┐ │ │ │ ╚══ │ 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│ └────────────┘ └──────────────┘ └───────────────────┘ └────────────────┘ └──────────────┘