使用不同的ScreenManagers和Initialize solution?

时间:2014-03-10 22:04:30

标签: xna

使用XNA C#,我有ScreenManager来处理背景,而ScreenManager2用来处理菜单选项和暂停屏幕。还有一个ObjectManager,但我对此没有任何问题......

在游戏开始时,ScreenManager完美地绘制背景,ScreenManager2精美地绘制和处理主菜单选项。但是当我选择Play Game时会发生错误。 ScreenManager应该绘制加载屏幕,而是在我的<:p>中得到错误“NullReferenceException未处理”

foreach(screenManager.GetScreens()中的GameScreen屏幕) screen.ExitScreen();

当我只有一个ScreenManager时,该方法运行良好,现在看起来因为第二个而初始化时出现问题。两个ScreenManage都是从DrawableGameComponent继承的,因此告诉游戏哪个是先画,后画,以及介于两者之间的所有内容。

我想我的问题是,如果它们相互冲突,我将如何重新初始化第一个ScreenManager?在导致错误的方法中,我已经尝试过:

ScreenManager.Initialize(); //在foreach循环之前 ScreenManager.isInitialized = true; //尝试在ScreenManager中布置this.Initialize()

还有许多其他布尔尝试......这引出了我的问题,你可以禁用并启用一个类吗?虽然继承自DrawableGameComponent,但我假设删除并重新添加???

如果问题很难理解,我会提前道歉,很难描述......

++++++++++++++++++++++++

我发现这是因为属于ScreenManager2的菜单选项,以及属于ScreenManager的加载屏幕。所以我煞费苦心地制作了一个布尔系统,允许ScreenManager从其自身添加加载屏幕......:/

0 个答案:

没有答案