调用'update'后XNA游戏堆栈溢出错误

时间:2012-08-08 01:28:30

标签: c# xna stack-overflow game-loop

大家好日子,

我正在构建一个跨平台的框架/抽象层,以便在适当的平台上利用Mono和XNA框架来定位Android,iOS和Windows Phone 7。我没有使用ExEn,MonoGame或类似的框架,尽管我从研究他们的方法中学到了很多东西。

框架的XNA部分扩展了XNA Game类,我很确定这是问题发生的地方。然而,我在跟踪它时遇到一些困难,而且对XNA Game类有更好了解的人可能会有很大的帮助。我不会为该类发布整个继承层次代码,因为它会占用一些空间,但我会在XNA Game类中请求有关问题可能来源的信息,这可能会让我找到我的错误。

我在运行测试游戏时收到堆栈溢出异常。完整的例外是:

An unhandled exception of type 'System.StackOverflowException' occurred in Microsoft.Xna.Framework.Game.dll

为了追查罪魁祸首,我一直在向控制台输出一些简单的调试语句。我得到的输出是:

Started init.
Started linear load.
Loading a texture...
Finished loading a texture...
Finished linear load.
Finished init.
Begin run called.
Begin run ended successfully.
Started update.
Ended update.

Process is terminated due to StackOverflowException.

如您所见,它已成功完成更新,但未继续使用BeginDraw或EndRun。我一直无法确定此时可能发生的进程,以便导致堆栈溢出异常。

如果有人可以帮助确定此时可能发生的过程,那么无疑将有助于找到问题的根源。如果你更容易检查代码,我当然可以提供它,我不愿意这样做,因为我相信我可以通过更多信息确定问题,并且理解问题的必要代码库可能证明非常大。

感谢您的时间和帮助,如果我能提供更多有用的信息,请告诉我。

1 个答案:

答案 0 :(得分:2)

<强>解决方案

事实证明OnActivated被重复调用,因为我显然将事件处理方法绑定到事件本身,从而创建了一个无限循环的自我切换。

<强>感谢

感谢Illian Pinzon这个有用的,如果有明显的建议,让我的大脑从任何Android开发引起的昏迷状态中解脱出来。