//先読みかけておく void UpdatePreLoadFiles(string scenarioLabel, int page) { //直前までの先読みファイルリスト HashSet <AssetFile> lastPreloadFileSet = preloadFileSet; //今回の先読みファイルリスト preloadFileSet = Engine.DataManager.MakePreloadFileList(scenarioLabel, page, maxFilePreload); if (preloadFileSet == null) { preloadFileSet = new HashSet <AssetFile>(); } //リストに従って先読み foreach (AssetFile file in preloadFileSet) { //先読み AssetFileManager.Preload(file, this); } //直前の先読みファイルのうち、今回の先読みファイルからなくなったものは使用状態を解除する foreach (AssetFile file in lastPreloadFileSet) { //もうプリロードされなくなったリストを作るために if (!(preloadFileSet.Contains(file))) { file.Unuse(this); } } }
//先読みかけておく void UpdatePreLoadFiles(int commandIndex, int fileCount) { HashSet <AssetFile> lastPreloadFileSet = preloadFileSet; preloadFileSet = new HashSet <AssetFile>(); while (true) { ++commandIndex; AdvCommand command = scearioData.GetCommand(commandIndex); if (null == command) { break; } if (command.LoadFileList != null) { foreach (AssetFile file in command.LoadFileList) { preloadFileSet.Add(file); } } if (preloadFileSet.Count > fileCount) { break; } } ; //リストに従って先読み foreach (AssetFile file in preloadFileSet) { AssetFileManager.Preload(file, this); //もうプリロードされなくなったリストを作るために if (lastPreloadFileSet.Contains(file)) { lastPreloadFileSet.Remove(file); } } //直前の先読みファイルは参照を減算しておく foreach (AssetFile file in lastPreloadFileSet) { file.Unuse(this); } }