/// <summary> /// ロードの完了処理 /// </summary> public void LoadComplete() { //新たにキャッシュファイル書きこむ必要がある場合 if (FileInfo.IsWriteNewCache) { //ロード成功 this.manager.WriteNewVersion(this); } cacheWriteBytes = null; if (IsDownloadOnly) { if (OnLoadSubFiles != null) { status = STAUS.USING; if (OnLoadComplete != null) { OnLoadComplete(this); } if (OnLoadSubFiles != null) { OnLoadSubFiles(this); } Unload(); } else { status = STAUS.LOAD_WAIT; } } else { // status = STAUS.LOAD_END; status = STAUS.USING; //メモリサイズを計算 if (!IsLoadRetry) { InitMemsSize(); if (OnLoadComplete != null) { OnLoadComplete(this); } if (OnLoadSubFiles != null) { OnLoadSubFiles(this); } } streamingStatus = LOAD_STREAMING_STAUS.LOADEND; } }
/// <summary> /// ロードの完了処理 /// </summary> public void LoadComplete() { cacheWriteBytes = null; if (IsDownloadOnly) { status = FileInfo.IsAssetBundle ? STAUS.LOAD_END : STAUS.LOAD_WAIT; } else { // status = STAUS.LOAD_END; status = STAUS.USING; //メモリサイズを計算 if (!IsLoadRetry) { InitMemsSize(); if (OnLoadComplete != null) { OnLoadComplete(this); } } streamingStatus = LOAD_STREAMING_STAUS.LOADEND; } }
/// <summary> /// ロード処理 /// </summary> /// <param name="timeOutDownload">ダウンロードのタイムアウトエラー時間</param> /// <returns></returns> public IEnumerator CoLoadAsync(float timeOutDownload) { this.status = STAUS.LOADING; this.isLoadRetry = false; this.isLoadError = false; this.streamingStatus = LOAD_STREAMING_STAUS.NONE; this.loadingPath = FileInfo.LoadWWWPath; if (FileInfo.StrageType == AssetFileStrageType.Resources) { LoadResource(loadingPath); } else { elapsedTime = 0.0f; lastProgress = 0; WWW www; // if (FileInfo.IsAssetBundle && FileInfo.StrageType != AssetFileStrageType.StreamingAssets ) if (FileInfo.IsAssetBundle) { //アセットバンドルのDL www = WWW.LoadFromCacheOrDownload(loadingPath, Version); } else { //その他 www = new WWW(loadingPath); } if (www == null) { SetLoadError("Not Found"); yield break; } //WWWでダウンロード using (www) { //ストリーミング再生でキャッシュへの書き込みが必要ない場合は、先にストリーミング用のサウンドを作成 if (FileInfo.IsStreamingType && !FileInfo.IsWriteNewCache) { streamingStatus = LOAD_STREAMING_STAUS.LOADING; sound = www.GetAudioClip(FileInfo.IsAudio3D, true, FileInfo.AudioType); sound.name = FileInfo.FilePath; } //ロード待ち while (!www.isDone && string.IsNullOrEmpty(www.error) && !CheckSoundStreamReady(www) && !CheckDownloadTimeout(www, timeOutDownload)) { UpdateLoadPirority(www); yield return(0); } if (!string.IsNullOrEmpty(www.error)) { Debug.Log(loadingPath + " is " + File.Exists(loadingPath)); //ロードエラー SetLoadError(www.error); } else if (CheckSoundStreamReady(www)) { //ストリーミングのみ独自処理 streamingStatus = LOAD_STREAMING_STAUS.READY; //その後のロード待ち while (!www.isDone && string.IsNullOrEmpty(www.error) && !CheckDownloadTimeout(www, timeOutDownload)) { UpdateLoadPirority(www); yield return(0); } if (!string.IsNullOrEmpty(www.error)) { //ロードエラー SetLoadError(www.error); } else if (!www.isDone) { //ロードエラー(タイムアウト) SetLoadError("DownLoad TimeOut " + elapsedTime + "sec"); } else { } } else if (!www.isDone) { //ロードエラー(タイムアウト) SetLoadError("DownLoad TimeOut " + elapsedTime + "sec"); } else { //ロード終了 //ストリーミングでも、完全にロードした場合はこっち来る if (streamingStatus != LOAD_STREAMING_STAUS.NONE) { streamingStatus = LOAD_STREAMING_STAUS.DONE; } if (!IsDownloadOnly) { try { switch (FileInfo.EncodeType) { case AssetFileEncodeType.None: LoadWWWNormal(www); break; case AssetFileEncodeType.AlreadyEncoded: LoadWWWCriptFile(www); break; case AssetFileEncodeType.EncodeOnCache: if (FileInfo.IsWriteNewCache) { LoadWWWNormal(www); } else { LoadWWWCriptFile(www); } break; case AssetFileEncodeType.AssetBundle: LoadAssetBundle(www); break; default: SetLoadError("Load Error " + FileInfo.CachePath); break; } } catch (Exception e) { SetLoadError("Load Error " + e.Message + "\n" + e.StackTrace); } } //新たにキャッシュファイルとして書き込む必要がある場合は、バイナリを取得しておく if (FileInfo.IsWriteNewCache) { cacheWriteBytes = www.bytes; } } } } yield break; }
/// <summary> /// ロード処理 /// </summary> /// <param name="timeOutDownload">ダウンロードのタイムアウトエラー時間</param> /// <returns></returns> public IEnumerator CoLoadAsync(float timeOutDownload) { //ロードを無視する if (this.IgnoreLoad) { yield break; } this.status = STAUS.LOADING; this.isLoadRetry = false; this.isLoadError = false; this.streamingStatus = LOAD_STREAMING_STAUS.NONE; this.loadingPath = FileInfo.LoadWWWPath; if (FileInfo.StrageType == AssetFileStrageType.Resources) { LoadResource(loadingPath); } else { elapsedTime = 0.0f; lastProgress = 0; WWW www = new WWW(loadingPath); if (www == null) { SetLoadError("Not Found"); yield break; } //WWWでダウンロード using (www) { //ストリーミング再生でキャッシュへの書き込みが必要ない場合は、先にストリーミング用のサウンドを作成 if (FileInfo.IsStreamingType && !FileInfo.IsWriteNewCache) { streamingStatus = LOAD_STREAMING_STAUS.LOADING; sound = www.GetAudioClip(FileInfo.IsAudio3D, true, FileInfo.AudioType); sound.name = FileInfo.FilePath; } //ロード待ち while (!www.isDone && string.IsNullOrEmpty(www.error) && !CheckSoundStreamReady(www) && !CheckDownloadTimeout(www, timeOutDownload)) { UpdateLoadPirority(www); yield return(0); } if (!string.IsNullOrEmpty(www.error)) { //ロードエラー SetLoadError(www.error); } else if (CheckSoundStreamReady(www)) { //ストリーミングのみ独自処理 streamingStatus = LOAD_STREAMING_STAUS.READY; //その後のロード待ち while (!www.isDone && string.IsNullOrEmpty(www.error) && !CheckDownloadTimeout(www, timeOutDownload)) { UpdateLoadPirority(www); yield return(0); } if (!string.IsNullOrEmpty(www.error)) { //ロードエラー SetLoadError(www.error); } else if (!www.isDone) { //ロードエラー(タイムアウト) SetLoadError("DownLoad TimeOut " + elapsedTime + "sec"); } else { } } else if (!www.isDone) { //ロードエラー(タイムアウト) SetLoadError("DownLoad TimeOut " + elapsedTime + "sec"); } else { //ロード終了 //ストリーミングでも、完全にロードした場合はこっち来る if (streamingStatus != LOAD_STREAMING_STAUS.NONE) { streamingStatus = LOAD_STREAMING_STAUS.DONE; } if (IsDownloadOnly) { //ダウンロードするだけでリソースをめもりには読み込まない //ダウンロード = キャッシュファイルに書き込むなので,ここでバイナリを記録しておく cacheWriteBytes = www.bytes; } else if (FileInfo.IsCaching && FileInfo.IsCrypt) { //暗号化されているファイルをキャッシュファイルからロード if (null != www.bytes) { LoadWWWCriptCacheFile(www); } else { SetLoadError("CaecheFile Read Error " + FileInfo.CachePath); } } else { if (FileInfo.IsAlreadyEncoded) { LoadWWWCriptFile(www); } else { //通常のファイルロード LoadWWWNormal(www); } } } } } }