///***以下、ファイル追加・ロード処理***/// // 管理ファイルを追加 AssetFileBase AddSub(string path, IAssetFileSettingData settingData) { AssetFileBase file; //管理テーブルにあるなら、そこから if (!fileTbl.TryGetValue(path, out file)) { if (path.Contains(" ")) { Debug.LogWarning("[" + path + "] contains white space"); } AssetBundleInfo assetBundleInfo = AssetBundleInfoManager.FindAssetBundleInfo(path); AssetFileInfo fileInfo = new AssetFileInfo(path, settings, assetBundleInfo); //staticなアセットにあるなら、そこから file = StaticAssetManager.FindAssetFile(this, fileInfo, settingData); if (file == null) { //カスタムロードなアセットにあるなら、そこから file = CustomLoadManager.Find(this, fileInfo, settingData); if (file == null) { //宴形式の通常ファイルロード file = new AssetFileUtage(this, fileInfo, settingData); } } fileTbl.Add(path, file); } return(file); }
private AssetFileBase AddSub(string path, IAssetFileSettingData settingData) { AssetFileBase base2; if (!this.fileTbl.TryGetValue(path, out base2)) { if (path.Contains(" ")) { Debug.LogWarning("[" + path + "] contains white space"); } AssetBundleInfo assetBundleInfo = this.AssetBundleInfoManager.FindAssetBundleInfo(path); AssetFileInfo fileInfo = new AssetFileInfo(path, this.settings, assetBundleInfo); base2 = this.StaticAssetManager.FindAssetFile(this, fileInfo, settingData); if (base2 == null) { base2 = this.CustomLoadManager.Find(this, fileInfo, settingData); if (base2 == null) { base2 = new AssetFileUtage(this, fileInfo, settingData); } } this.fileTbl.Add(path, base2); } return(base2); }
// 管理ファイルを追加 AssetFileBase AddSub(string path, IAssetFileSettingData settingData) { //管理テーブルにあるなら、そこから string path2 = GetPathChangedSoundExt(path); AssetFileBase file = FindFromTbl(path, path2, settingData); if (file != null) { return(file); } /* if (path.Contains(" ")) * { * Debug.LogWarning("[" + path + "] contains white space"); * } */ AssetBundleInfo assetBundleInfo = FindAssetBundleInfo(path, path2); AssetFileInfo fileInfo = new AssetFileInfo(path, settings, assetBundleInfo); //staticなアセットにあるなら、そこから file = StaticAssetManager.FindAssetFile(this, fileInfo, settingData); if (file == null) { //カスタムロードなアセットにあるなら、そこから file = CustomLoadManager.Find(this, fileInfo, settingData); if (file == null) { //宴形式の通常ファイルロード file = new AssetFileUtage(this, fileInfo, settingData); } } fileTbl.Add(path, file); return(file); }
IEnumerator CoLoadFile(AssetFile file) { yield return(StartCoroutine(file.CoLoadAsync(timeOutDownload))); if (file.IsLoadError && dummyFiles.isEnable) { AssetFileUtage utageFile = file as AssetFileUtage; if (utageFile != null) { if (dummyFiles.outputErrorLog) { Debug.LogError("Load Failed. Dummy file loaded:" + file.FileName + " ver:" + file.Version + "\n" + file.LoadErrorMsg); } utageFile.LoadDummy(dummyFiles); } } if (!file.IsLoadError) { //ロード終了処理 file.LoadComplete(); //再ロード必要 if (file.IsLoadRetry) { StartCoroutine(CoLoadFile(file)); } else { //ロード成功 if (isOutPutDebugLog) { Debug.Log("Load End :" + file.FileName + " ver:" + file.Version); } loadingFileList.Remove(file); LoadNextFile(); MemoryOptimize(); } } else { //ロード失敗 Debug.LogError("Load Failed :" + file.FileName + " ver:" + file.Version + "\n" + file.LoadErrorMsg); //リトライ if (file.CountLoadErrorRetry++ < autoRetryCountOnDonwloadError) { if (isOutPutDebugLog) { Debug.Log(string.Format("Load Retry({0}) :{1} ver:{2}", file.CountLoadErrorRetry, file.FileName, file.Version)); } StartCoroutine(CoLoadFile(file)); } else { //ロード失敗処理 file.LoadFailed(CallbackError, ReloadFileSub); } } }
//キャッシュファイル書き込み internal void WriteNewVersion(AssetFileUtage file) { if (AssetFileManager.DontUseCache) { return; } if (AssetFileManager.isOutPutDebugLog) { Debug.Log("WriteCacheFile:" + file.FileName + " ver:" + file.Version + " cache:" + file.CacheVersion); } //キャッシュファイル書き込み準備 file.ReadyToWriteCache(IncCacheID(), CacheRootDir, AssetFileManager.isDebugCacheFileName); string cachePath = file.CachePath; //キャッシュ用のディレクトリがなければ作成 FileIOManger.CreateDirectory(cachePath); //ファイル書き込み bool ret = false; if (file.EncodeType == AssetFileEncodeType.EncodeOnCache) { switch (file.FileType) { case AssetFileType.Sound: ret = FileIOManger.WriteSound(cachePath, file.WriteCacheFileSound); break; case AssetFileType.Texture: ret = FileIOManger.WriteEncodeNoCompress(cachePath, file.CacheWriteBytes); break; default: ret = FileIOManger.WriteEncode(cachePath, file.CacheWriteBytes); break; } } else { ret = FileIOManger.Write(cachePath, file.CacheWriteBytes); } WrapperUnityVersion.SetNoBackupFlag(cachePath); //キャッシュファイルテーブルを更新して上書き if (!ret) { if (AssetFileManager.isOutPutDebugLog) { Debug.LogError("Write Failed :" + file.CachePath); } } else { WriteCacheTbl(); file.DeleteOldCacheFile(); } }