C#游戏循环和输入

时间:2011-12-29 23:25:50

标签: c# loops input delegates

我正在尝试为游戏制作一个简单的可重用引擎,例如乒乓。我在时间和输入方面遇到了麻烦。

例如,使用XNA Game Class,Update方法每秒触发60次。要在我从头开始制作的课程中这样做,我会使用计时器,还是完全不同的东西?

为了澄清输入问题,我如何检测Key事件(EX:Key被按下)?我认为这与代表有关,但我不太确定。

编辑:我没有使用XNA。

2 个答案:

答案 0 :(得分:1)

您可能希望使用带有回调的计时器,或者甚至是完全是游戏循环的第二个线程。我用Java和C#完成了它;我倾向于使用计时器,因为对于大多数游戏而言,毫秒分辨率足够好。如果您想查看一些(Java)示例代码,请查看我的rudimentary game engine。至于游戏输入......好吧,看看示例代码。它管理事件驱动的输入并将其封装,以便可以轮询数据。 :P

或者,请查看MonoXNA。它尚未100%完成,但2D部分和基本游戏内容(游戏循环,输入等)都是。

答案 1 :(得分:0)

您只需在更新方法中检查键盘输入即可。或者,您可以创建可在更新方法中调用的updateInput方法。

private void updateInput()
{
    KeyboardState newState = Keyboard.GetState();

    if (newState.IsKeyDown(Keys.Enter))
    {
        // code goes here
    }
}

基本上就是这样!当然,这是一个基本的方法,因为你正在寻找一个可重用的引擎,你应该看看GameComponent类。在XNA中,您可以制作可在不同游戏项目中重复使用的组件。

希望这有帮助!