首页 / C# / c#-将游戏循环限制为每秒20帧
c#-将游戏循环限制为每秒20帧
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-将游戏循环限制为每秒20帧,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1401字,纯文字阅读大概需要3分钟。
内容图文
参见下面我的主游戏循环.我正在寻找一种方法来将此循环限制为每秒20帧
private void renderFrame()
{
while (Running)
{
game_controls.CheckKeyPress();
Frame = game_graphics.DrawFrame();
Panel_Graphics.DrawImage(Frame, 0, 0,320, 320);
ThreadMonitor.MonitorFPS();
}
}
下面是ThreadMonitor类:
class Monitor
{
private int FrameCount;
private long TickCount;
private int PanelPosition = 2;
private Font font = new Font(FontFamily.GenericSansSerif, 12);
private Graphics Monitor_Graphics;
public Monitor(Graphics g)
{
AllocConsole();
Monitor_Graphics = g;
}
public void MonitorFPS()
{
FrameCount++;
if (Environment.TickCount >= TickCount + 1000)
{
Console.WriteLine("Running: " + FrameCount + "fps");
FrameCount = 0;
TickCount = Environment.TickCount;
}
}
#region ShowConsole kernel32.dll
/// <summary>
/// Generates Console Window for debugging purposes
/// </summary>
/// <returns> Console </returns>
[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAsAttribute(UnmanagedType.Bool)]
static extern bool AllocConsole();
#endregion
我希望帧均匀生成,我不希望游戏停止半秒钟.
我不确定如何做到这一点.
解决方法:
在循环中等待50毫秒不会使您的游戏达到20 FPS,这会使您的游戏最高为20 FPS(通常较慢),具体取决于循环的内容和当前的系统/ CPU负载.只要确保您了解其中的区别即可.
更好的方法是在循环开始时根据当前的Environment.TickCount等待所需的毫秒数.例如,您的TickCount为120ms,并且您希望下一个游戏滴答时间为150ms,则需要等待30毫秒,如果已经是160ms,则根本不需要等待.
内容总结
以上是互联网集市为您收集整理的c#-将游戏循环限制为每秒20帧全部内容,希望文章能够帮你解决c#-将游戏循环限制为每秒20帧所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。