Esempio n. 1
0
        // 新建任务
        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();
            }
        }
Esempio n. 2
0
        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
        }
Esempio n. 3
0
 /// <summary>
 /// 新建加载任务
 /// </summary>
 public static void NewLoadTask(Save save, ISaveTarget target)
 {
     NewTask(SaveTask.Type.Load, save, target);
 }
Esempio n. 4
0
 /// <summary>
 /// 新建删除任务
 /// </summary>
 public static void NewDeleteTask(ISaveTarget target)
 {
     NewTask(SaveTask.Type.Delete, null, target);
 }
Esempio n. 5
0
 /// <summary>
 /// 新建保存任务
 /// </summary>
 public static void NewSaveTask(Save save, ISaveTarget target)
 {
     NewTask(SaveTask.Type.Save, save, target);
 }