Простой способ сохранить игру в WP7 Silverlight?
Каков наилучший способ сохранить состояние игры в WP7 Silverlight? Я предпочитаю сохранить его в текстовом файле. Я хочу сохранить игру, когда приложение переходит в фоновый режим (например, кто-то звонит, пользователь нажимает "назад" и т. Д.) Или закрывается. Как я могу это сделать?
1 ответ
Решение
обновление, этот код из следующих статей:
Простое приложение WP7 Mango для фоновых задач, тостов и плиток Простое приложение WP7 Mango для фоновых задач, тостов и плиток: Объяснение кода
IsolatedStorage работает хорошо.
Это класс, который я использую для сериализации и десериализации экземпляра в json (или xml) в IsolatedStorage. Этот пример использует ServiceStack.Text, но его можно отключить.
Чтобы использовать, читать и писать:
public class MyClass {
public void Save() {
MutexedIsoStorageFile.Write(this, "MyClass.json", "MYCLASSJSON");
}
public static MyClass Load() {
return MutexedIsoStorageFile.Read<MyClass>("MyClass.json", "MYCLASSJSON");
}
}
public static class MutexedIsoStorageFile
{
public static T Read<T>(string fileName, string mutexName) where T : new()
{
var mutexFile = new Mutex(false, mutexName);
var model = new T();
mutexFile.WaitOne();
try
{
using (var store = IsolatedStorageFile.GetUserStoreForApplication())
using (var stream = new IsolatedStorageFileStream(fileName, FileMode.OpenOrCreate, FileAccess.Read, store))
using (var reader = new StreamReader(stream))
if (!reader.EndOfStream)
{
//var serializer = new XmlSerializer(typeof (T));
//model = (T) serializer.Deserialize(reader);
model = JsonSerializer.DeserializeFromReader<T>(reader);
}
}
finally
{
mutexFile.ReleaseMutex();
}
return model;
}
public static void Write<T>(T data, string fileName, string mutexName)
{
var mutexFile = new Mutex(false, mutexName);
mutexFile.WaitOne();
try
{
using (var store = IsolatedStorageFile.GetUserStoreForApplication())
using (var stream = new IsolatedStorageFileStream(fileName, FileMode.Create, FileAccess.Write, store))
{
//var serializer = new XmlSerializer(typeof (T));
//serializer.Serialize(stream, data);
JsonSerializer.SerializeToStream(data, stream);
}
}
finally
{
mutexFile.ReleaseMutex();
}
}