2013-02-09 27 views
3

用XNA 4.0,我试图通过这样的事情来创造不同的游戏屏幕的多个内容管理:XNA如何创建单独的ContentManager?

ContentManager myManager = new ContentManager(Content.ServiceProvider, Content.RootDirectory); 

与内容是原始ContentManager系统为我提供。

然而,它没有像我预料的那样工作。如果我调用myManager.Unload(),那么用原始ContentManager加载的所有内容也都会被卸载。这就好像两个人持有相同的数据。

我怎样才能独立出来,使一个管理者的卸载不影响其他?

+0

为什么你需要一个以上的内容管理你的游戏? – user1306322 2013-02-09 05:33:13

+0

我认为这个问题可能出现在两个内容管理器使用相同的Content或Content.ServiceProvider实例。尝试创建不使用它们的单独内容管理器。 – user1306322 2013-02-09 05:34:51

+0

我希望当任何屏幕变为不活动时,它的内容会自动卸载,以免用尽太多内存。 ContentManager构造函数需要这两个参数(ServiceProvider和RootDirectory),我不知道我可以从哪里获得这些参数,因此我使用了游戏提供给我的原始内容管理器。 – IcySnow 2013-02-09 06:17:54

回答

3

您发布的代码没有任何问题。我个人使用Game.Services - 但Content.ServiceProvider是没关系 - 他们都点完全相同的对象

该错误必须在代码的其他地方。您是否绝对是确定您在每种情况下都使用了正确的内容管理器?

您是否尝试过通过您的代码在调试器步进?并利用“Make Object ID”功能? (在手表变量或您将鼠标悬停。变量的上下文菜单)