Пример #1
0
        ///***以下、ファイル追加・ロード処理***///


        // 管理ファイルを追加
        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);
        }
Пример #3
0
        // 管理ファイルを追加
        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);
        }
Пример #4
0
        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);
                }
            }
        }
Пример #5
0
        //キャッシュファイル書き込み
        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();
            }
        }