0
我在XNA的遊戲工作。
我目前正在寫入Windows和xbox360。孤立的存儲文件處理
這是以下問題的正確方法嗎?
我想將文件保存到xbox上已隔離存儲的內容中。 我有一個包含所有設置的settings.xml文件。這是在我的內容與屬性不編譯(標記爲內容),並複製如果更新,所以它可以被修改,但仍然保持在內容。
我有一個保存和加載函數,對於xbox的windows &有不同的作用,並且當前正在加載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
}
是否有其他方式不那麼複雜的或類似的設置操作默認文件平原聰明,只應創建第一次啓動遊戲,然後它應該可以在運行時修改。
你應該從你的if語句中提取'XmlSerializer serializer = ...',所以你不必重複兩次。 –