2012-06-13 23 views
0

這個問題有點類似於this.在XNA的Content項目中添加引用的文件路徑是什麼?

就我而言,我有一個文本文件。由於沒有適用於文本文件的內容導入程序,因此我必須使用流讀取器編寫自己的函數。我試圖完成的是從文本文件中讀取,並相應地在選項屏幕中設置一些值。我添加了所有必需的引用,但使用「../options.txt」作爲文件路徑不起作用。很可能文件路徑被解析爲除Content文件夾以外的內容。我如何繼續?

此外,我收到錯誤說「嘗試訪問方法(System.IO .... ctor)失敗」。是否缺少添加其他參考?

+0

如果這是一個與遊戲捆綁在一起的文本文件,並且不打算由玩家修改,我建議您只爲它創建一個自定義內容導入程序。 – lzcd

+0

抱歉,延遲迴復。我需要一個自定義導入器,因爲它應該是讀/寫訪問。儘管我剛剛使用了Andy提供的代碼來完成這個項目。 – jitendragarg

回答

0

這是否必須在xBox 360上工作?如果是這樣,不可能在Windows中使用文件系統,則需要使用存儲設備。說實話,我反正只是使用這種方法,所以如果你決定把你的遊戲帶到WP7或360,它就會起作用。

有一個很好的演示遊戲,加載和保存this微軟頁面上的數據,以及爲它做什麼

這是從演示所採取的描述,它顯示瞭如何打開一個儲存容器和序列化一些配置數據到它,加載操作就是一樣簡單。

// Create the data to save. 
SaveGameData data = new SaveGameData(); 
data.PlayerName = "Hiro"; 
data.AvatarPosition = new Vector2(360, 360); 
data.Level = 11; 
data.Score = 4200; 

// Open a storage container. 
IAsyncResult result = 
    device.BeginOpenContainer("StorageDemo", null, null); 

// Wait for the WaitHandle to become signaled. 
result.AsyncWaitHandle.WaitOne(); 

StorageContainer container = device.EndOpenContainer(result); 

// Close the wait handle. 
result.AsyncWaitHandle.Close(); 

string filename = "savegame.sav"; 

// Check to see whether the save exists. 
if (container.FileExists(filename)) 
    // Delete it so that we can create one fresh. 
    container.DeleteFile(filename); 

// Create the file. 
Stream stream = container.CreateFile(filename); 

// Convert the object to XML data and put it in the stream. 
XmlSerializer serializer = new XmlSerializer(typeof(SaveGameData)); 
serializer.Serialize(stream, data); 

// Close the file. 
stream.Close(); 

// Dispose the container, to commit changes. 
container.Dispose(); 
+0

謝謝。這工作正常。這是一種比普通方法更難的解決方案,但它使我能夠完全訪問這些文件。 – jitendragarg

相關問題