运行XNA游戏时运行windows窗体

本文关键字:运行 窗体 windows 游戏 XNA | 更新日期: 2024-09-23 10:44:16

我目前正在设计一款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文件中。如有任何建议,不胜感激。

运行XNA游戏时运行windows窗体

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

我可以推荐两种相对简单的方法:

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

  2. 在WinForms中执行所有操作。基本上,你的游戏必须在WinForm中,这样你所有的WinForm都可以通过它们的正常方式轻松交流。好消息是,您可以在WinForm中嵌入XNA屏幕。基本上,任何XNA级别的编辑器教程都会向您展示如何做到这一点,但这里有一个关于codeplex的示例和一些来自微软示例集的示例代码。从这一点上,你应该能够让一切都畅所欲言。由于性能和美观的原因,这种方法并不理想,但如果你的游戏足够简单,它应该是实用的。

我强烈推荐上面的选项一,但如果其他选项都失败了,选项二确实有效。

如果你省去麻烦,只在XNA中绘制所有内容,那会更好。基本上有两个类,一个类包含所有项目,另一个类用于库存。你还应该有一个列表来更容易地管理事情。