2015-07-11 50 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的方法。这是一种读取文件的方法,无需亲自编写特定于平台的代码。