我使用 console.out.writeline() 来打印属于 XNA 游戏中不同精灵的坐标。但几秒钟后,游戏开始变得非常缓慢,几乎停止。
(不写入控制台时,性能没有问题)。(精灵的位置写在每个更新方法中)
有没有办法在不破坏游戏性能的情况下写入控制台?
我使用 console.out.writeline() 来打印属于 XNA 游戏中不同精灵的坐标。但几秒钟后,游戏开始变得非常缓慢,几乎停止。
(不写入控制台时,性能没有问题)。(精灵的位置写在每个更新方法中)
有没有办法在不破坏游戏性能的情况下写入控制台?
您是否能够写入日志文件而不是控制台?由于缓冲和缺乏滚动、显示等,这可能会更快。
当它运行时,你真的有一个控制台吗?如果是这样,请在您不感兴趣时尝试将其最小化。我的猜测是导致问题的滚动。
编辑:好的,似乎有一些证据是有序的。
一些测试......我没有安装 XNA,但不同的写入控制台的方式仍然很有趣。我将数字 0-99999 写入各种控制台:
如您所见,Visual Studio 控制台非常缓慢,非最小化的“普通”控制台次之,最小化的控制台相当简单,写入文件非常快。
我坚持我的建议,尝试写入文件而不是控制台,否则,如果它是一个独立的控制台,请尝试在大多数情况下将其最小化。
“有没有办法在不破坏游戏性能的情况下写入控制台?”
好吧,你可以像大多数游戏引擎一样创建自己的游戏控制台(最著名的是 Quake),并在按下某个键时显示控制台。
编辑:
如果您不想实现自己的控制台,有一个项目可以这样做:
http://www.codeplex.com/XnaConsole
它比 Win32 控制台具有优势,因为它在游戏中以游戏帧速率运行,并且在控制台和 xna 应用程序之间切换时不会让您丢失设备。(虽然在 XNA 中设备恢复是自动的,但丢失设备仍然会在幕后发生)
您可能正在向控制台写入太多数据。通过使用计数器或计时器来降低控制台写入的频率。每秒一次更新通常足以查看您需要的内容。
我知道这是一篇旧帖子,但对于那些有类似问题的人来说,有更好的方法。您可以包含另一个控制台类型的库,它非常易于使用(比 xna 控制台项目容易得多)。它被称为 XNA 调试终端,可以在http://www.protohacks.net/xna_debug_terminal
找到它在
游戏顶部放置一个类似命令窗口的终端,并允许您查看/设置任何变量的值,调用任何方法,甚至实时观察值的变化。它是完全开源的,可与 XNA 3.0 和 XNA 3.1 一起使用。这可以让您在游戏执行期间随时轻松查看精灵坐标(或其他任何内容)。
简单地说,您可以执行以下操作:
创建一个名为 eg 的类Trace
,并在 draw 方法中使用它在屏幕上绘制所需的信息,SpriteBatch.DrawString(...)
这比我猜的 Console 更好..
我希望这有帮助,
和平。