今天是个好日子,
我一直在构建一个跨平台框架/抽象层,以利用适当平台上的 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。我一直无法确定此时可能会发生哪些进程以导致堆栈溢出异常。
如果有人可以帮助确定此时可能发生的过程,那么无疑将有助于找到问题的根源。如果您更愿意检查代码,我当然可以提供它,我会犹豫这样做,因为我相信我可以通过更多信息来确定问题,并且理解问题所需的代码库可能会非常大。
感谢您的时间和帮助,如果我能提供更多有用的信息,请告诉我。