2015-07-11 33 views
0

在我目前的遊戲中,modding是遊戲的一大部分。我花了一段時間纔開發出一個將修改過的內容加載到遊戲中的好系統,但是我終於找到了一種方法,如果可能的話,我想保留它。加載來自未知目錄的原始內容

我是如何處理改裝成內容

在遊戲的內容文件夾(C:/用戶/用戶名/ 4X),有一個MODS的文件夾。每個Mod將在Mod目錄中擁有它自己的文件夾。遊戲通過一個文件(相反,它會,我還沒有實現它),並計算出它將加載哪個Mod目錄。在弄清楚之後,它會將所有內容加載到遊戲中(我可以更詳細地解釋它與該主題相關的內容,我只是不想在不必要的東西上佔用空間)。

那麼,什麼是你的問題?

好,MODS的都將有原料資源(.FBX,.WAV,.MP3),因爲我無法加載任何東西,但XNB文件,我有絕對不知道如何加載MOD的內容。好吧,我收回了,我一直在想幾個解決方案,但我真的不知道哪個更實用,或者是否有更好的方法。首先,我想過從Pipeline應用程序中借用一些代碼,並在第一次加載時創建了所有的mod內容,但我並不完全瞭解Pipeline的代碼,而且我也不想搞亂部分實現它。接下來,我想要求mod創建者使用管道在之前構建他們的內容他們發佈了他們的mod,但是這看起來有點不專業,因爲我想擁有一個Mod Creation Engine,它擁有所有的工具捆綁在一起。這使我回到使用一些Pipeline的代碼並將其嵌入到引擎中,但後來我遇到了與我最後一個想法相同的問題。

最後,我想到了剛剛加載的原始內容。但是這個想法存在明顯的缺陷。

所以我猜我問的是:

  1. 我如何可以加載原始內容?也就是說,尚未建成XNB文件內容
  2. 如果沒有,我怎麼能開始學習,使管道應用程序記號的代碼,因爲我可能已經使用它的一些代碼?

回答

0

實際上,你可以直接與MonoGame加載某些原始內容。例如:

var texture = Content.Load<Texture2D>("raw.png")` 

應該工作,如果你有PNG文件中的內容目錄,並設置其屬性,內容/複製如果更新。

但是,請注意,這隻會爲一些內容,有些平臺上工作。我知道PNG文件工作,WAV文件的工作(但他們必須是單聲道44khz我相信),我很確定我有MP3文件工作一次。

您可能會遇到與FBX文件和精靈字體的問題。沒有什麼能夠阻止你繞過內容管理器,然後自己加載它們。我之前已經取得了巨大的成功。

呵呵,另外我應該提一下,看看TitleContainer.OpenStream的方法。這是一種讀取文件的方法,無需親自編寫特定於平臺的代碼。