// 新建任务 static void NewTask(SaveTask.Type type, Save save, ISaveTarget target) { var task = new SaveTask() { type = type, save = save, target = target, }; // 预处理 switch (type) { case SaveTask.Type.Save: task.exception = save.ToBytes(out task.data); break; default: task.data = null; task.exception = null; break; } _tasks.Enqueue(task); // 第一个任务在创建后立即开始执行 if (_tasks.Count == 1) { BeginTask(); } }
void Start() { instance = this; // GameSave var gameSavables = new IBinarySavable[] { Player.instance, }; gameSave = new BinarySavableCollection(gameSavables); // Settings var settingsSavables = new ITextSavable[] { new TextSavableField ( "Quality Level", t => QualitySettings.SetQualityLevel(int.Parse(t)), w => w.Write(QualitySettings.GetQualityLevel()), () => QualitySettings.SetQualityLevel(0) ), new TextSavableField ( "Audio Volume", t => AudioListener.volume = float.Parse(t), w => w.Write(AudioListener.volume), () => AudioListener.volume = 1 ), }; settings = new TextSavableCollection(settingsSavables); // platform-dependent #if UNITY_PS4 gameSaveTarget = new PS4SaveTarget("TestGameSave.bin"); settingsTarget = new PS4SaveTarget("TestSettings.txt"); #else // Standalone #if STEAM gameSaveTarget = new SteamSaveTarget("TestGameSave.bin"); settingsTarget = new FileSaveTarget("TestSettings.txt"); #else // File System gameSaveTarget = new FileSaveTarget("TestGameSave.bin"); settingsTarget = new FileSaveTarget("TestSettings.txt"); #endif #endif }
/// <summary> /// 新建加载任务 /// </summary> public static void NewLoadTask(Save save, ISaveTarget target) { NewTask(SaveTask.Type.Load, save, target); }
/// <summary> /// 新建删除任务 /// </summary> public static void NewDeleteTask(ISaveTarget target) { NewTask(SaveTask.Type.Delete, null, target); }
/// <summary> /// 新建保存任务 /// </summary> public static void NewSaveTask(Save save, ISaveTarget target) { NewTask(SaveTask.Type.Save, save, target); }