//ファイルのコンバート void Convert() { try { AssetFileManager assetFileManager = FindObjectOfType <AssetFileManager>(); if (assetFileManager == null) { Debug.LogError("FileManager is not found in current scene"); return; } //ファイルの入出力に使う FileIOManager fileIOManager = assetFileManager.FileIOManager; switch (outputType) { case OutputType.Default: default: //アセットバンドルをビルド BuildAssetBundles(fileIOManager); break; } AssetDatabase.Refresh(); } catch (System.Exception e) { Debug.LogException(e); } }
/// <summary> /// 書き込み /// </summary> public virtual void Write() { if (!DontUseSystemSaveData && isInit) { FileIOManager.WriteBinaryEncode(Path, WriteBinary); } }
/// <summary> /// 書き込み /// </summary> public void Write() { if (!DontUseSystemSaveData) { FileIOManager.WriteBinaryEncode(Path, WriteBinary); } }
/// <summary> /// 読み込み /// </summary> public void Read() { if (!FileIOManager.ReadBinaryDecode(Path, ReadBinary)) { //デフォルト値で初期化 InitDefault(); } }
/// <summary> /// セーブデータを削除 /// </summary> /// <param name="saveData">削除するセーブデータ</param> public void DeleteSaveData(AdvSaveData saveData) { if (FileIOManager.Exists(saveData.Path)) { FileIOManager.Delete(saveData.Path); } saveData.Clear(); }
//ゲーム終了時 void OnApplicationQuit() { if (IsAutoSave && AutoSaveData != null) { if (CurrentAutoSaveData.IsSaved) { FileIOManager.WriteBinaryEncode(CurrentAutoSaveData.Path, CurrentAutoSaveData.Write); } } }
protected virtual void AutoSave() { if (IsAutoSave && CurrentAutoSaveData != null) { if (CurrentAutoSaveData.IsSaved) { FileIOManager.WriteBinaryEncode(CurrentAutoSaveData.Path, CurrentAutoSaveData.Write); } } }
//コンバートファイルリストのファイルを書き込む void Write() { byte[] bytes = BinaryUtil.BinaryWrite(ConvertFileList.Write); bool isEncoded = Settings.FindSettingFromPath(ConvertFileList.FilePath).EncodeType == AssetFileEncodeType.AlreadyEncoded; if (isEncoded) { bytes = FileIOManager.Encode(bytes); } File.WriteAllBytes(ConvertFileList.FilePath, bytes); }
//アセットバンドルのビルド void BuildAssetBundles(FileIOManager fileIOManager) { if (buildMode == AssetBundleBuildMode.None) { return; } //アセットバンドルをプラットフォーム別にビルド List <BuildTarget> buildTargets = new List <BuildTarget>(); switch (buildMode) { case AssetBundleBuildMode.OnlyEditor: //エディタ上のみ buildTargets.Add(AssetBundleHelper.BuildTargetFlagToBuildTarget(AssetBundleHelper.EditorAssetBundleTarget())); break; case AssetBundleBuildMode.AllPlatform: //全プラットフォーム { buildTargets = AssetBundleHelper.BuildTargetFlagsToBuildTargetList(buildTargetFlags); } break; default: break; } MainAssetInfo inputDirAsset = new MainAssetInfo(this.ResourcesDirectory); List <MainAssetInfo> assets = GetAssetBudleList(inputDirAsset); RenameAssetBundles(inputDirAsset.AssetPath, assets); AssetBundleBuild[] builds = ToAssetBundleBuilds(assets); if (builds.Length <= 0) { return; } foreach (BuildTarget buildTarget in buildTargets) { string outputPath = FilePathUtil.Combine(OutputPath, AssetBundleHelper.BuildTargetToBuildTargetFlag(buildTarget).ToString()); //出力先のディレクトリを作成 if (!Directory.Exists(outputPath)) { Directory.CreateDirectory(outputPath); } //アセットバンドルを作成 AssetBundleManifest manifest = BuildPipeline.BuildAssetBundles(outputPath, builds, buildOptions, buildTarget); Debug.Log("BuildAssetBundles to " + buildTarget.ToString()); if (isOutputLog) { WriteManifestLog(manifest, outputPath); } } }
/// <summary> /// セーブデータを読み込み /// </summary> /// <param name="saveData">読み込むセーブデータ</param> /// <returns>読み込めたかどうか</returns> bool ReadSaveData(AdvSaveData saveData) { if (FileIOManager.Exists(saveData.Path)) { return(FileIOManager.ReadBinaryDecode(saveData.Path, saveData.Read)); } else { return(false); } }
/// <summary> /// セーブデータを書き込み /// その場の状態を書き込まず、各ページ冒頭のオートセーブデータを利用する /// </summary> /// <param name="engine">ADVエンジン</param> /// <param name="saveData">書き込むセーブデータ</param> public void WriteSaveData(AdvEngine engine, AdvSaveData saveData) { if (!CurrentAutoSaveData.IsSaved) { Debug.LogError("SaveData is Disabled"); return; } //セーブ saveData.SaveGameData(CurrentAutoSaveData, engine, UtageToolKit.CreateResizeTexture(CaptureTexture, CaptureWidth, CaptureHeight)); FileIOManager.WriteBinaryEncode(saveData.Path, saveData.Write); }
//コンバートファイルリストのファイルを読み込む void Read() { //出力先のアセットバンドル情報を読み込む string convertFileListPath = FilePathUtil.Combine(OutputResourcesPath, Path.GetFileNameWithoutExtension(OutputResourcesPath) + ExtensionUtil.ConvertFileList); convertFileListPath += ExtensionUtil.UtageFile; ConvertFileList = new ConvertFileList(convertFileListPath); //ファイルから読み込む if (File.Exists(convertFileListPath)) { byte[] bytes = File.ReadAllBytes(convertFileListPath); bytes = FileIOManager.Decode(bytes); BinaryUtil.BinaryRead(bytes, ConvertFileList.Read); } }
/// <summary> /// 初期化 /// </summary> public void Init() { //セーブデータのディレクトリがなければ作成 FileIOManager.CreateDirectory(ToDirPath()); //オートセーブデータ。読み込み用と書き込み用 autoSaveData = new AdvSaveData(AdvSaveData.SaveDataType.Auto, ToFilePath("Auto"));; currentAutoSaveData = new AdvSaveData(AdvSaveData.SaveDataType.Auto, ToFilePath("Auto"));; quickSaveData = new AdvSaveData(AdvSaveData.SaveDataType.Quick, ToFilePath("Quick"));; saveDataList = new List <AdvSaveData>(); for (int i = 0; i < SaveMax; i++) { AdvSaveData data = new AdvSaveData(AdvSaveData.SaveDataType.Default, ToFilePath("" + (i + 1))); saveDataList.Add(data); } }
protected virtual bool TryReadSaveData() { if (DontUseSystemSaveData) { return(false); } string saveDir = FilePathUtil.Combine(FileIOManager.SdkPersistentDataPath, DirectoryName); //セーブデータのディレクトリがなければ作成 FileIOManager.CreateDirectory(saveDir); Path = FilePathUtil.Combine(saveDir, FileName); if (!FileIOManager.Exists(Path)) { return(false); } return(FileIOManager.ReadBinaryDecode(Path, ReadBinary)); }
/// <summary> /// 初期化 /// </summary> public void Init(AdvConfig config) { this.config = config; string saveDir = FileIOManager.SdkPersistentDataPath + DirectoryName + "/"; //セーブデータのディレクトリがなければ作成 FileIOManager.CreateDirectory(saveDir); path = saveDir + FileName; isInit = true; if (!FileIOManager.Exists(Path)) { //デフォルト値で初期化 InitDefault(); } else { Read(); } }
//指定のパスのファイルをメモリからバージョンアップ。 //ファイルとメモリが同じだったら、書き込まずfalseを返す。 bool TryConvertFileFromMem(string outputFileName, byte[] buffer) { AssetFileSetting setting = Settings.FindSettingFromPath(outputFileName); byte[] oldBytes = File.Exists(outputFileName) ? File.ReadAllBytes(outputFileName) : new byte[0]; if (setting.EncodeType == AssetFileEncodeType.AlreadyEncoded) { //エンコードが必要なタイプはエンコードする switch (setting.FileType) { case AssetFileType.Sound: Debug.LogError("Sound File not support to encode file"); return(false); case AssetFileType.Texture: buffer = FileIOManager.EncodeNoCompress(buffer); break; default: buffer = FileIOManager.Encode(buffer); break; } } if (IsEqualBytes(oldBytes, buffer)) { return(false); } else { //ディレクトリがなければ作る string dir = Path.GetDirectoryName(outputFileName); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } File.WriteAllBytes(outputFileName, buffer); return(true); } }
//コンバートファイルリストのファイルを読み込む void Read() { //出力先のアセットバンドル情報を読み込む string convertFileListPath = FilePathUtil.Combine(OutputResourcesPath, Path.GetFileNameWithoutExtension(OutputResourcesPath) + ExtensionUtil.ConvertFileList); bool isEncoded = Settings.FindSettingFromPath(convertFileListPath).EncodeType == AssetFileEncodeType.AlreadyEncoded; if (isEncoded) { convertFileListPath += ExtensionUtil.UtageFile; } ConvertFileList = new ConvertFileList(convertFileListPath); //ファイルから読み込む if (File.Exists(convertFileListPath)) { byte[] bytes = File.ReadAllBytes(convertFileListPath); if (isEncoded) { bytes = FileIOManager.Decode(bytes); } BinaryUtil.BinaryRead(bytes, ConvertFileList.Read); } }
/// <summary> /// 初期化 /// </summary> public void Init(AdvEngine engine) { this.engine = engine; string saveDir = FileIOManager.SdkPersistentDataPath + DirectoryName + "/"; //セーブデータのディレクトリがなければ作成 FileIOManager.CreateDirectory(saveDir); path = saveDir + FileName; isInit = true; if (DontUseSystemSaveData || !FileIOManager.Exists(Path)) { //デフォルト値で初期化 InitDefault(); } else { if (!FileIOManager.ReadBinaryDecode(Path, ReadBinary)) { //デフォルト値で初期化 InitDefault(); } } }
public AdvFileListConverter(string outPutDirectoryPath, FileIOManager fileIOManager, AssetFileManagerSettings settings) { OutputResourcesPath = outPutDirectoryPath; FileIOManager = fileIOManager; Settings = settings; }
//コンバートファイルリストのファイルを書き込む void Write() { byte[] bytes = BinaryUtil.BinaryWrite(ConvertFileList.Write); bytes = FileIOManager.Encode(bytes); File.WriteAllBytes(ConvertFileList.FilePath, bytes); }
//ファイルのコンバート void Convert() { try { AssetFileManager assetFileManager = FindObjectOfType <AssetFileManager>(); if (assetFileManager == null) { Debug.LogError("FileManager is not found in current scene"); return; } //ファイルの入出力に使う FileIOManager fileIOManager = assetFileManager.FileIOManger; AssetFileManagerSettings settings = assetFileManager.Settings; if (outputType == OutputType.Default) { AssetFileManagerSettings.LoadType loadType = settings.LoadTypeSetting; if (isOutputLocal && LocalDirectory != null) { //ローカルの場合は、LoadTypeをLocalCompressedに settings.LoadTypeSetting = AssetFileManagerSettings.LoadType.LocalCompressed; string output = new MainAssetInfo(LocalDirectory).FullPath; //リソースをバージョンアップ AdvFileListConverter converter = new AdvFileListConverter(output, fileIOManager, settings); converter.VersionUp(VersionUpLocalFiles); if (isOutputLocalLog) { converter.WriteLog(false); } } if (isOutputServer && !string.IsNullOrEmpty(OutputServerResourcePath)) { //サーバーの場合は、LoadTypeをServerに settings.LoadTypeSetting = AssetFileManagerSettings.LoadType.Server; //シナリオやリソースをバージョンアップ AdvFileListConverter converter = new AdvFileListConverter(OutputServerResourcePath, fileIOManager, settings); converter.VersionUp(VersionUpServerFiles); if (isOutputServerLog) { converter.WriteLog(false); } //アセットバンドルをビルド BuildAssetBundles(OutputServerResourcePath, fileIOManager, settings, isOutputServerLog); } settings.LoadTypeSetting = loadType; } else { //シナリオやリソースをバージョンアップ AdvFileListConverter converter = new AdvFileListConverter(AdvancedOutputPath, fileIOManager, settings); converter.VersionUp(VersionUpAdvanceFiles); if (isOutputAdvancedLog) { converter.WriteLog(false); } //アセットバンドルをビルド BuildAssetBundles(AdvancedOutputPath, fileIOManager, settings, isOutputAdvancedLog); } AssetDatabase.Refresh(); } catch (System.Exception e) { Debug.LogException(e); } }
//アセットバンドルのビルド void BuildAssetBundles(string outPutDirectoryPath, FileIOManager fileIOManager, AssetFileManagerSettings settings, bool isOutputLog) { if (assetBundleBuildMode == AssetBundleBuildMode.None) { return; } //アセットバンドルをプラットフォーム別にビルド List <BuildTarget> buildTargets = new List <BuildTarget>(); switch (assetBundleBuildMode) { case AssetBundleBuildMode.OnlyEditor: //エディタ上のみ buildTargets.Add(EditorUserBuildSettings.activeBuildTarget); break; case AssetBundleBuildMode.AllPlatform: //全プラットフォーム { buildTargets = AssetBundleHelper.BuildTargetFlagsToBuildTargetList(buildTargetFlags); } break; default: break; } List <MainAssetInfo> assets = GetAssetBudleList(settings); RenameAssetBundles(assets); AssetBundleBuild[] builds = ToAssetBundleBuilds(assets); if (builds.Length <= 0) { return; } foreach (BuildTarget buildTarget in buildTargets) { string outputPath = FilePathUtil.Combine(outPutDirectoryPath, AssetBundleHelper.BuildTargetToBuildTargetFlag(buildTarget).ToString()); //出力先のディレクトリを作成 if (!Directory.Exists(outputPath)) { Directory.CreateDirectory(outputPath); } //アセットバンドルを作成 AssetBundleManifest manifest = BuildPipeline.BuildAssetBundles(outputPath, builds, BuildAssetBundleOptions.None, buildTarget); //アセットバンドルの情報をバージョンアップ AdvFileListConverter converter = new AdvFileListConverter(outputPath, fileIOManager, settings); converter.VersionUp( (x) => { int count = x.ConvertFileList.EditorVersionUpAssetBundle(manifest, buildTarget); Debug.Log("" + count + " AsseBundle version up to target " + buildTarget.ToString()); }); if (isOutputLog) { converter.WriteLog(true); } } }
/// <summary> /// 書き込み /// </summary> public void Write() { FileIOManager.WriteBinaryEncode(Path, WriteBinary); }
/// <summary> /// セーブデータを書き込み /// その場の状態を書き込まず、各ページ冒頭のオートセーブデータを利用する /// </summary> /// <param name="engine">ADVエンジン</param> /// <param name="saveData">書き込むセーブデータ</param> public void WriteSaveData(AdvEngine engine, AdvSaveData saveData) { saveData.SaveGameData(CurrentAutoSaveData, engine, UtageToolKit.CreateResizeTexture(CaptureTexture, CaptureWidth, CaptureHeight)); FileIOManager.WriteBinaryEncode(saveData.Path, saveData.Write); }
/// <summary> /// セーブデータを消去 /// </summary> public void Delete() { FileIOManager.Delete(Path); }
public AdvFileListConverter(string outPutDirectoryPath, FileIOManager fileIOManager) { OutputResourcesPath = outPutDirectoryPath; FileIOManager = fileIOManager; }