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 var saveManager = new PS4SaveManager(); gameSaveTarget = new PS4StorageTarget("TestGameSave.bin"); gameSaveManager = saveManager; settingsTarget = new PS4StorageTarget("TestSettings.txt"); settingsManager = saveManager; #else // Standalone #if STEAM gameSaveTarget = new SteamStorageTarget("TestGameSave.bin"); gameSaveManager = new SteamSaveManager(); settingsTarget = new FileStorageTarget("TestSettings.txt"); settingsManager = new BackgroundThreadSaveManager(); #else // File System var saveManager = new BackgroundThreadSaveManager(); gameSaveTarget = new FileStorageTarget("TestGameSave.bin"); gameSaveManager = saveManager; settingsTarget = new FileStorageTarget("TestSettings.txt"); settingsManager = saveManager; #endif #endif }
/// <summary> /// Converts the <see cref="IBinarySavable" /> object to a byte array by calling its <see cref="IBinarySavable.WriteToStream(Stream, object)" /> method on a <see cref="MemoryStream" />. /// </summary> /// <param name="obj">This <see cref="IBinarySavable" /> object.</param> /// <param name="arg">Provides the argument which is passed to the <see cref="IBinarySavable.WriteToStream(Stream, object)" /> method.</param> /// <returns> /// A byte array converted from the <see cref="IBinarySavable" /> object. /// </returns> public static byte[] ToBytes(this IBinarySavable obj, object arg = null) { using (var ms = new MemoryStream()) { ms.WriteBinarySavable(obj, arg); return(ms.ToArray()); } }
public static void WriteBinarySavable(this Stream stream, IBinarySavable obj, params object[] args) { if (obj == null) { stream.WriteByte(0); } else { stream.WriteByte((byte)IOChecks.BinarySavable); obj.WriteToStream(stream, args); } }
static void _writeISavable(Stream s, IBinarySavable obj) { obj.WriteToStream(s, null); }