WPF< - > XNA - 如何结合这两种技术?

时间:2010-01-29 22:01:54

标签: wpf xna game-engine

我已经在几个地方读过,可以将XNA和WPF结合起来。 我个人需要的是游戏/地图编辑器,它实际上就是游戏本身(会让引擎在后台运行),因为地图系统将对象的序列化版本写入XML,稍后会加载。

我的问题是我想要一个标准的应用程序,它在后台运行引擎,并在用户从前端创建游戏资产时创建游戏资产,然后将它们序列化并放入XML中。

如果有可能从游戏中运行WPF,对于UI,如果有人对此有任何经验,我会很感激,如果他/她分享它,这也会派上用场。

很快:我如何制作WPF(或winforms)应用程序,其XNA代码在其中一个控件中运行,在后台运行?

5 个答案:

答案 0 :(得分:2)

我在另一个问题中发布了这个问题,但似乎有很多关于如何在WPF中集成类似XNA的控件的问题。我阅读了Nick Gravelyn的博客和Arcane.Xna帖子,并设法开发类似于两者的东西,与Microsoft.Xna.Framework.Game完全相似,同时提供WPF兼容性。如果您愿意,甚至可以实例化多个Game类:

https://xnaml.codeplex.com/

答案 1 :(得分:1)

我不知道有人将WPF控件嵌入到XNA游戏窗口中。这将是一件非常困难的事情,因为它们都使用DirectX进行渲染。由于您被允许使用XNA进行任何,这将使WPF叠加等等非常困难。如果您正在寻找游戏内控件,请试用NeoForce

走另一条路要简单得多(阅读:实际支持)。我知道您可以将XNA窗口嵌入到Windows用户控件中 - 请参阅this以获得快速演示。我使用了类似的技术为我的游戏制作编辑器。不幸的是,直接与WPF集成也很麻烦(由于同样的原因你不能把WPF控件放在XNA GameWindow中)。但是,您可以将该控件嵌入到WindowsFormsHost中,这可能会很好地工作(还没有尝试过)。

显然,这不适用于Xbox 360,因为那里没有WinForms和WPF,但你通常不会把你的编辑器放在360上。

ALSO:我希望您在运行时不使用XML序列化来加载游戏文件 - 这就是XNA内容管道的用途。

答案 2 :(得分:0)

您是否尝试过创建WPF应用程序然后添加XNA引用?

您应该能够这样做,然后创建一个继承自GameObject的类,并将其放入您的WPF应用程序中。

WPF可以直接访问许多DirectX以及相机以及在WPF中编写游戏所需的许多内容。也许只是使用XNA方法进行一些计算。

我绝对可以看到不止一种方法来抚养这只猫。

答案 3 :(得分:0)

在XNA论坛上查看此主题:http://forums.xna.com/forums/p/1122/6455.aspx

它将1)让您了解为什么这种集成如此麻烦2)向您展示如何在WPF表单上托管XNA控件(查找ZMan的帖子)。至于在XNA中使用WPF进行GUI渲染,我不会屏住呼吸。微软实际上没有什么理由支持这一点,并且控制台GUI体验与用于点击的API完全排列在一起。

答案 4 :(得分:0)