“按Enter开始游戏”XNA INTRO SCREEN

时间:2010-10-17 10:37:30

标签: xna xna-4.0

我创建了一个带有“按Enter键启动游戏”的内置屏幕,然后退出并退出游戏是没有问题的,但让游戏开始变得更难。有什么建议吗?

3 个答案:

答案 0 :(得分:2)

最简单的方法是设置状态机。看起来很简单。

enum GameState 
{
TitleScreen = 0,
GameStarted,
GameEnded,
}

然后在Game1.cs中,或者在你处理这个按钮点击的任何地方,你可以在你的类中放置一个变量来存储你所在的当前游戏状态。

GameState currentGameState = GameState.TitleScreen;

然后,在您对您编码的实际游戏进行抽奖或更新之前,您可以检查当前的游戏状态

void Draw(GameTime time)
{
   if(currentGameState == GameStarted)
   {
       //Then handle the game drawing code here

   }
}

更新方法基本上看起来相同

答案 1 :(得分:1)

我使用的系统效果很好(对我而言)

设置一个名为IContext的界面。在这里有void Draw()和void Update()。

然后在游戏中有一个名为Context的公共IContext。你只需在提供的游戏循环中调用context.update()和context.draw()。

然后菜单屏幕只需要实现IContext。您通过其构造函数传递对游戏对象的引用,该构造函数允许您从插入的任何对象更改上下文。

所以你插入"菜单"在您点击 Enter 键时,在菜单中调出this.game.context = new level01();

希望这是有道理的。

尼克

答案 2 :(得分:1)

正如九号名所说,国家机器是前往这里的方式。然而,我想你会看到这个样本 - http://create.msdn.com/en-US/education/catalog/sample/game_state_management - 由微软提供,而不是自己滚动。
非常容易实现和改变whist涵盖你想要做的所有事情,包括输入处理。