运行XNA游戏时运行Windows窗体

时间:2013-12-12 17:00:11

标签: c# xna

我目前正在设计一款RPG游戏,要求我使用库存系统。理想情况下,用户可以按一个键并打开角色的库存窗口。

示例:

protected override void Update(GameTime gameTime)
{
    if ((GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
    || (Keyboard.GetState().IsKeyDown(Keys.Escape))) // to exit game, press Esc button
    { this.Exit(); }

    if (Keyboard.GetState().IsKeyDown(Keys.E))
    {
      //insert window from lunch code here...
    }

    // TODO: Add your update logic here
    base.Update(gameTime);
}

我正在使用窗体表格设计库存屏幕。但是,我不知道如何将窗体加载到Game1文件中。任何建议将不胜感激。

3 个答案:

答案 0 :(得分:2)

您需要在XNA项目中设计清单屏幕,就像创建精灵并在Update方法中捕获用户输入一样,可以像其他任何视觉一样。

答案 1 :(得分:1)

我可以推荐两条相对简单的路线:

  1. 在XNA中做一切。这意味着您必须使用XNA技术完成所有UI(例如库存窗口)。这个选项会给你最好的设计,因为,说实话,WinForms可能有点难看,特别是当他们被迫进入看起来不像WinForm的东西时

  2. 在WinForms中执行所有操作。基本上你的游戏必须在WinForm中,这样你的所有WinForms都可以通过正常方式轻松进行通信。好消息是你可以在WinForm中嵌入一个XNA屏幕。基本上任何XNA级别编辑器教程都会向您展示如何执行此操作,但here is one example on codeplexsome sample code from Microsoft's collection of examples。从这个你应该能够让一切都在谈论。由于性能原因和美学原因,这种方法不太理想,但如果您的游戏足够简单,它应该是有用的。

  3. 我强烈推荐上面的选项一,但如果所有其他方法都失败,则选项二可行。

答案 2 :(得分:0)

如果您省去麻烦并在XNA中绘制所有内容会更好。基本上有两个类,一个包含所有项目,另一个包含库存。您还应该有一个List来更轻松地管理事物。