[英]Rogue Exception, System.InvalidOperationException, XNA
我的xna游戲具有此“流氓” System.InvalidOperationException,該異常僅偶爾發生,並且似乎是隨機觸發的,或者至少是出於我的控制輸入明智的觸發。 在按開始並加載第一個菜單屏幕后,( 有時我會使用GameStateManagement示例作為我的游戲的基礎,如果有幫助的話)游戲有時但並非總是在“ foreach(GameScreen屏幕)的“ in”部分拋出System.InvalidOperationException在屏幕上)“該方法的完整代碼:
/// <summary>
/// Tells each screen to draw itself.
/// </summary>
public override void Draw(GameTime gameTime)
{
foreach (GameScreen screen in screens) //exception thrown at the "in" part
{
if (screen.ScreenState == ScreenState.Hidden)
continue;
screen.Draw(gameTime);
}
}
老實說,對於觸發該異常的原因一無所知,因為我沒有做任何與何時引發異常以及何時沒有引發異常的事情。 我不確定是否能幫到您,但這是例外情況詳細信息
at System.Collections.Generic.List`1.Enumerator.MoveNext()
at GameStateManagement.ScreenManager.Draw(GameTime gameTime)
at Microsoft.Xna.Framework.Game.Draw(GameTime gameTime)
at GameStateManagement.GameStateManagementGame.Draw(GameTime gameTime)
at Microsoft.Xna.Framework.Game.DrawFrame()
at Microsoft.Xna.Framework.Game.Tick()
at Microsoft.Xna.Framework.Game.HostIdle(Object sender, EventArgs e)
at Microsoft.Xna.Framework.GameHost.OnIdle()
at Microsoft.Xna.Framework.XboxGameHost.RunOneFrame()
at Microsoft.Xna.Framework.XboxGameHost.Run()
at Microsoft.Xna.Framework.Game.RunGame(Boolean useBlockingRun)
at Microsoft.Xna.Framework.Game.Run()
at GameStateManagement.Program.Main()
} System.Exception {System.InvalidOperationException}
這是調用堆棧:
> GameStateManagementSample.exe!GameStateManagement.ScreenManager.Draw(Microsoft.Xna.Framework.GameTime gameTime) Line 338 + 0x33 bytes C#
Microsoft.Xna.Framework.Game.dll!Microsoft.Xna.Framework.Game.Draw(Microsoft.Xna.Framework.GameTime gameTime) + 0x4d bytes
GameStateManagementSample.exe!GameStateManagement.GameStateManagementGame.Draw(Microsoft.Xna.Framework.GameTime gameTime) Line 89 + 0x7 bytes C#
Microsoft.Xna.Framework.Game.dll!Microsoft.Xna.Framework.Game.DrawFrame() + 0x6a bytes
Microsoft.Xna.Framework.Game.dll!Microsoft.Xna.Framework.Game.Tick() + 0x2a9 bytes
Microsoft.Xna.Framework.Game.dll!Microsoft.Xna.Framework.Game.HostIdle(object sender, System.EventArgs e) + 0x6 bytes
Microsoft.Xna.Framework.Game.dll!Microsoft.Xna.Framework.GameHost.OnIdle() + 0x19 bytes
Microsoft.Xna.Framework.Game.dll!Microsoft.Xna.Framework.XboxGameHost.RunOneFrame() + 0xc bytes
Microsoft.Xna.Framework.Game.dll!Microsoft.Xna.Framework.XboxGameHost.Run() + 0x1b bytes
Microsoft.Xna.Framework.Game.dll!Microsoft.Xna.Framework.Game.RunGame(bool useBlockingRun) + 0x9c bytes
Microsoft.Xna.Framework.Game.dll!Microsoft.Xna.Framework.Game.Run() + 0x7 bytes
GameStateManagementSample.exe!GameStateManagement.Program.Main() Line 108 + 0x6 bytes C#
謝謝! Ivatrix。
您的游戲代碼似乎正在修改您未考慮的某些代碼路徑上的screens
。 看看IEnumerator.MoveNext上的文檔。
創建枚舉器后,對集合進行了修改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.