仅在XNA中仅部署某些资源?

XNA 4.0中的ContentManager只有一个卸载所有资产的Unload()方法。

我想要有一些总是加载的“全局”资产,但是我希望每个级别的资产在更改级别时应该被卸载。

我应该创建ContentManager的第二个实例作为Level.cs类的一部分吗? 还是应该使用Game.Content,然后调用.Dispose我加载的资产? 还是应该在ReadAsset函数之上创建我自己的ContentManager?

创建ContentManager的第二个实例。

您不应该从ContentManager(使用默认实现)加载的东西Dispose() ,因为这些实例被共享和重用。

创建您自己的ContentManager版本是正交的。 无论哪种方式,您将创建ContentManager的第二个实例(或从它派生的类)。 所以如果现有的实现适合你的目的 – 然后使用它,否则覆盖你想改变。

当然,如果你的游戏比较小,那么如果你仅仅使用一个ContentManager而不用担心卸载内容。