我正在 XNA 中开发游戏。
我目前正在写 Windows 和 xbox360。
这是解决以下问题的正确方法吗?
我想将一个文件保存到我的内容中已经存在的 Xbox 上的隔离存储中。我有一个包含所有设置的 settings.xml 文件。它在我的内容中,具有不被编译的属性(标记为内容),如果更新则复制,因此可以对其进行修改,但仍保留在内容中。
我有一个保存和加载功能,对 windows 和 xbox 有不同的作用,目前正在加载 GameSettings 对象,但也能够保存和加载 XML 文件。
加载:
public static GameSettings Load(string settingsFilename)
{
GameSettings settings; // Creates a new instance of GameSettings
#if WINDOWS
using (Stream stream = File.OpenRead(settingsFilename))// Open and Read-stream from the filename entered
{
XmlSerializer serializer = new XmlSerializer(typeof(GameSettings)); // Serializer of type GameSettings
settings = (GameSettings)serializer.Deserialize(stream); //Deserialize the xml file stream and fill the data into a GameSettings object
}
#elif XBOX
using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
{
using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream(settingsFilename, FileMode.Open, FileAccess.Read, isf))
{
XmlSerializer serializer = new XmlSerializer(typeof(GameSettings));
settings = (GameSettings)serializer.Deserialize(stream);
}
}
#endif
return settings;
}
节省:
public static void Save(string settingsFileName, GameSettings settings)
{
#if WINDOWS
using (Stream stream = File.OpenWrite(settingsFileName))// Open and Write-stream from the filname entered
{
XmlSerializer serializer = new XmlSerializer(typeof(GameSettings)); // Serializer of type GameSettings
serializer.Serialize(stream, settings); // serialize the GameSettings data into the stream
}
#elif XBOX
using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
{
using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream(settingsFileName, FileMode.OpenOrCreate, isf))
{
XmlSerializer serializer = new XmlSerializer(typeof(GameSettings));
serializer.Serialize(stream, settings);
}
}
#endif
}
在处理默认文件(如设置)时,是否还有其他更简单或更智能的方法,这些方法只应在游戏第一次启动时创建,然后应该能够在运行时进行修改。