c#游戏循环和输入

本文关键字:输入 循环 游戏 | 更新日期: 2023-09-27 18:18:59

我正在尝试为游戏(如pong)制作一个简单的可重用引擎。我在计时和输入方面有问题。

例如,使用XNA游戏类,更新方法每秒被触发60次。要在我从头开始创建的类中做到这一点,我应该使用计时器,还是完全不同的东西?

为了澄清我的输入问题,我将如何检测一个键事件(例如:键被按下)?我认为这与委托有关,但我不太确定。

编辑:我不使用XNA

c#游戏循环和输入

你可能想要使用带有回调的计时器,或者甚至是一个完全是游戏循环的第二个线程。我在Java和c#中都做过;我倾向于使用计时器,因为毫秒级的分辨率对于大多数游戏来说已经足够了。如果您想要一些(Java)示例代码,请查看我的基本游戏引擎。至于游戏输入…那么,请查看示例代码。它管理事件驱动的输入并对其进行封装,以便对数据进行轮询。: P

或者,研究MonoXNA。它还没有100%完成,但是2D部分和基本的游戏内容(游戏循环,输入等)已经完成了。

你真正需要做的就是在你的update方法中检查键盘输入。或者,您可以创建一个updateInput方法,它可以在您的更新方法中调用。

private void updateInput()
{
    KeyboardState newState = Keyboard.GetState();
    if (newState.IsKeyDown(Keys.Enter))
    {
        // code goes here
    }
}

本质上就是这样!当然,这是一种基本的方法,因为你想要创造一个可重复使用的引擎,你应该研究一下GameComponent类。在XNA中,你可以制作可以在不同游戏项目中重用的组件。

希望这对你有帮助!