임씨는 XNA에서 게임을하고 있습니다.
현재 저는 두 창과 xbox360을 모두 쓰고 있습니다.격리 된 저장소 파일 처리
다음 문제에 대한 올바른 접근 방법입니까?
내 콘텐츠에 이미있는 xbox의 격리 된 저장소에 파일을 저장하고 싶습니다. 모든 설정이 들어있는 settings.xml 파일이 있습니다. 내 콘텐츠에 컴파일되지 않고 (콘텐츠로 표시됨) 속성이 더 최신 인 경우 복사되므로 수정할 수 있지만 콘텐츠 내에서 유지 관리됩니다.
나는 윈도우 & 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
}
은 게임을 처음 실행할 때 작성해야 덜 복잡 또는 일반 스마트 설정과 같은 처리의 기본 파일과 다른 방법이있다 그런 다음 런타임 중에 수정할 수 있어야합니다.
if 문에서'XmlSerializer serializer = ...'를 가져와 두 번 반복하지 않아야합니다. –