protected IEnumerator CoLoadGraphic(GraphicInfoList graphic, Action OnComplete) { IsLoading = true; //直前のファイルがあればそれを削除 foreach (var item in this.GetComponents <AssetFileReference>()) { Destroy(item); } foreach (var item in graphic.InfoList) { AssetFile file = AssetFileManager.Load(item.File, this); file.AddReferenceComponet(this.gameObject); file.Unuse(this); } while (!graphic.IsLoadEnd) { yield return(0); } OnComplete(); IsLoading = false; }
//章別に分かれたシナリオをロードする IEnumerator LoadChaptersAsync(string rootDir) { //動的に作成 AdvImportScenarios scenarios = ScriptableObject.CreateInstance <AdvImportScenarios>(); foreach (string chapterName in ChapterNames) { string url = FilePathUtil.Combine(rootDir, chapterName) + ".chapter.asset"; AssetFile file = AssetFileManager.Load(url, this); while (!file.IsLoadEnd) { yield return(null); } AdvChapterData chapter = file.UnityObject as AdvChapterData; if (scenarios == null) { Debug.LogError(url + " is not scenario file"); yield break; } scenarios.AddChapter(chapter); } this.Scenarios = scenarios; }
/// <summary> /// CSV設定ファイルをロードして、データ作成 /// </summary> /// <param name="filePathInfoList">ロードするパスのリスト</param> /// <returns></returns> public virtual IEnumerator LoadCsvAsync(List <AssetFilePathInfo> filePathInfoList) { IsLoadEnd = false; ClearGridList(); List <AssetFile> fileList = new List <AssetFile>(); foreach (AssetFilePathInfo filePathInfo in filePathInfoList) { fileList.Add(AssetFileManager.Load(filePathInfo.Path, filePathInfo.Version, this)); } foreach (AssetFile file in fileList) { while (!file.IsLoadEnd) { yield return(0); } if (!file.IsLoadError) { List.Add(file.Csv); } file.Unuse(this); } IsLoadEnd = true; }
/// <summary> /// 派生ファイルを追加してロードを開始させる /// </summary> public virtual void LoadAndAddSubFile(string path) { AssetFile file = AssetFileManager.Load(path, this.Version, this); SubFiles.Add(path, file); }
//**************************** TSVのロード用 ****************************// /// <summary> /// TSVをロード /// </summary> /// <param name="url">ファイルパス</param> /// <param name="version">シナリオバージョン(-1以下で必ずサーバーからデータを読み直す)</param> /// <returns></returns> internal IEnumerator CoLoadFromTsv(string url, int version) { //起動ファイルの読み込み AssetFile bootFile = AssetFileManager.Load(url, version, this); Debug.Log("Load Chapter : " + ChapterName + " :Ver " + bootFile.Version); while (!bootFile.IsLoadEnd) { yield return(null); } string rootDir = FilePathUtil.GetDirectoryPath(url); //設定ファイルの読み込み List <AssetFile> settingFileList = new List <AssetFile>(); { StringGrid grid = bootFile.Csv; foreach (StringGridRow row in grid.Rows) { if (row.RowIndex < grid.DataTopRow) { continue; //データの行じゃない } if (row.IsEmptyOrCommantOut) { continue; //データがない } string path = AdvParser.ParseCell <string>(row, AdvColumnName.Param1); int ver = AdvParser.ParseCell <int>(row, AdvColumnName.Version); settingFileList.Add(AssetFileManager.Load(FilePathUtil.Combine(rootDir, path), ver, this)); } } //設定ファイルの読み込み List <AssetFile> scenarioFileList = new List <AssetFile>(); foreach (var item in settingFileList) { while (!item.IsLoadEnd) { yield return(null); } if (!item.IsLoadError) { StringGrid grid = item.Csv; if (grid.SheetName != AdvSheetParser.SheetNameScenario) { this.RuntimeGridList.Add(grid); } else { foreach (StringGridRow row in grid.Rows) { if (row.RowIndex < grid.DataTopRow) { continue; //データの行じゃない } if (row.IsEmptyOrCommantOut) { continue; //データがない } string path = AdvParser.ParseCell <string>(row, AdvColumnName.FileName); int ver = AdvParser.ParseCellOptional <int>(row, AdvColumnName.Version, 0); //旧形式(ファイル分割なし)に対応 if (!path.Contains("/")) { path = "Scenario/" + path; } path += ".tsv"; scenarioFileList.Add(AssetFileManager.Load(FilePathUtil.Combine(rootDir, path), ver, this)); } } } item.Unuse(this); } foreach (var item in scenarioFileList) { while (!item.IsLoadEnd) { yield return(null); } if (!item.IsLoadError) { this.RuntimeGridList.Add(item.Csv); } item.Unuse(this); } bootFile.Unuse(this); // Debug.Log("Load End Chapter : " + url + " :Ver " + bootFile.Version); Debug.Log("Load End Chapter : " + ChapterName + " :Ver " + bootFile.Version); }