【发布时间】:2023-04-03 15:55:01
【问题描述】:
我正在玩游戏循环,并打算创建一些游戏作为练习。
目前我有一个稳定的游戏循环,游戏会尽快更新,渲染每秒更新 x 次(目前为 25 次)
渲染方法基本上是 draw + Console.Clear() 并且在非常高的更新时显示变得非常抖动,因为当 Console.Clear() 命中时它还没有完成绘制。
有没有更好的方法来做这样的事情?
我可以将任何数据写入控制台,然后用其他数据替换吗?
【问题讨论】:
我正在玩游戏循环,并打算创建一些游戏作为练习。
目前我有一个稳定的游戏循环,游戏会尽快更新,渲染每秒更新 x 次(目前为 25 次)
渲染方法基本上是 draw + Console.Clear() 并且在非常高的更新时显示变得非常抖动,因为当 Console.Clear() 命中时它还没有完成绘制。
有没有更好的方法来做这样的事情?
我可以将任何数据写入控制台,然后用其他数据替换吗?
【问题讨论】:
假设你在每个循环中再次从左上角写一个全屏,你可以简单地将 Clear() 替换为:
Console.SetCursorPosition(0, 0);
并覆盖上一个屏幕。
【讨论】:
由于您使用的是 C#,因此您可能需要查看 XNA Framework。
我猜你的问题是因为 Console.Clear() 没有针对这种用途进行优化,因为 XNA 使用了类似的方法(Clear() 在 GraphicsDevice 上被调用)。
如果您不想尝试使用 XNA,那么绘制一个矩形(纯黑色或灰色或其他)可能比调用 Clear() 来“清空”屏幕然后在上面绘制可能更快.
【讨论】:
你可能想查看ConsoleLibrary
我没有使用它,但从文章/演示来看,它似乎可以让你在控制台上做很多整洁的事情。
【讨论】: