Easy way to save game in WP7 Silverlight?

前端 未结 1 1228
名媛妹妹
名媛妹妹 2020-12-10 09:51

What is the best way to save game state in WP7 Silverlight? I prefer to save it in text file. I want save game when application goes to background (for example someone is ca

相关标签:
1条回答
  • 2020-12-10 10:22

    update, this code is from the following articles:

    Simple WP7 Mango App for Background Tasks, Toast, and Tiles Simple WP7 Mango App for Background Tasks, Toast, and Tiles: Code Explanation

    IsolatedStorage works well.

    This is a class I use to serialize and deserialize an instance to json (or xml) in IsolatedStorage. This example is use ServiceStack.Text but it can be switched out.

    To use, read and write:

    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();
                }
            }
    
    0 讨论(0)
提交回复
热议问题