[英]Run windows form while running an XNA game
我目前正在设计一款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项目中设计库存屏幕,就像创建精灵并在Update方法中捕获用户输入一样。
我可以推荐两种相对简单的路线:
在XNA中做一切。 这意味着您必须使用XNA技术完成所有UI(例如库存窗口)。 这个选项会给你最好的设计,因为,说实话,WinForms可能有点难看,特别是当他们被迫进入看起来不像WinForm的东西时
在WinForms中做一切。 基本上你的游戏必须在WinForm中,这样你的所有WinForms都可以通过正常方式轻松进行通信。 好消息是你可以在WinForm中嵌入一个XNA屏幕。 基本上任何XNA级别的编辑器教程都会向您展示如何执行此操作,但这里有一个关于codeplex的 示例以及Microsoft的示例集合中的一些示例代码 。 从这个你应该能够让一切都在谈论。 由于性能原因和美观,这种方法不太理想,但如果您的游戏足够简单,它应该是有用的。
我强烈推荐上面的选项一,但如果一切都失败,选项二确实有效。
如果你省去麻烦并在XNA中绘制所有东西会更好。 基本上有两个类,一个包含所有项目,另一个包含库存。 您还应该有一个List来更轻松地管理事物。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.