gpt4 book ai didi

c# - 将游戏循环限制为每秒 20 帧

转载 作者:行者123 更新时间:2023-11-30 16:04:31 28 4
gpt4 key购买 nike

请看下面我的主要游戏循环。我正在寻找一种方法将此循环限制为每秒 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,你预计下一个游戏tick是150ms,你需要等待30毫秒,如果已经是160ms,你根本不需要等待。

关于c# - 将游戏循环限制为每秒 20 帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34839284/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com