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