我已經成功地使用Winform Series 1和Winform Series 2成功構建了我的winform內容,但是我的問題是,下次打開它時,如何將內容加載回編輯器。內容.xnb文件當前正被保存到臨時文件夾中。無論如何要將內容重新加載到編輯器中,而不必再去創建每個文件?Winform XNA中的建築內容
我可以將它保存到bin /文件夾內的Content文件夾,然後在啓動時查看該文件夾並查找.xnb文件並加載它們?還是有更簡單的方法呢?
我已經成功地使用Winform Series 1和Winform Series 2成功構建了我的winform內容,但是我的問題是,下次打開它時,如何將內容加載回編輯器。內容.xnb文件當前正被保存到臨時文件夾中。無論如何要將內容重新加載到編輯器中,而不必再去創建每個文件?Winform XNA中的建築內容
我可以將它保存到bin /文件夾內的Content文件夾,然後在啓動時查看該文件夾並查找.xnb文件並加載它們?還是有更簡單的方法呢?
在第二個WinForms示例中,有一個HTML自述文件,描述應用程序如何將構建內容保存到臨時目錄,然後在程序關閉時將其刪除。
這是最重要的一點:
根據您的應用程序,你可能更願意總是使用相同的臨時目錄的名稱,永不刪除。這會將文件留在硬盤上。內容構建過程是增量式的。如果您的程序嘗試加載之前運行過程中已經構建的相同內容文件,則不需要執行任何實際的處理工作。這可以加快程序的加載時間,例如可能希望每次啓動時加載相同文件的關卡編輯器。
它說刪除臨時目錄「由ContentBuilder.DeleteTempDirectory
處理,這被稱爲Dispose
」。因此,只需撥打DeleteTempDirectory
即可將其刪除。
自述文件更詳細地描述瞭如何選擇臨時目錄(以及爲什麼)。您可以修改CreateTempDirectory
以更好地適應您的應用程序。例如,如果您的編輯器具有「級別」文件,您可能希望將您的構建內容(.xnb文件)保存在級別旁邊的同名子目錄中,以便您的遊戲可以輕鬆打開構建的內容。
一旦你的文件被保存在會話之間 - 你所要做的就是重新加載它們。兩種明顯的方法是存儲打開的文件列表,並在下一個會話中重新加載它。或者乾脆開一切,這是你的輸出目錄:
下面是一些粗糙的代碼做後者(假設沒有子目錄):
string folder = @"C:\TemporaryXNAFilesOrWhatever";
List<Texture2D> textures = new List<Texture2D>();
ContentManager content = new ContentManager(serviceProvider, folder);
string[] files = Directory.GetFiles(folder, "*.xnb");
foreach(string file in files)
{
string assetName = Path.GetFileNameWithoutExtension(file);
textures.Add(content.Load<Texture2D>(assetName));
}
謝謝你的發言。這確實有幫助,雖然它不能解決我的問題。我想知道是否可以將那些已經構建的文件加載回編輯器而無需指定,或者我可以只查看文件夾並以這種方式加載它們? – 2010-07-28 07:20:20
@Chris:我已經更新了我的回答,描述瞭如何做到這一點。 – 2010-07-28 11:36:59