我写了一个简单的 XNA 4.0 游戏。我想制作一个 Windows 窗体用户控件来渲染此游戏,并向 XNA 提供必要的交互反馈(键盘和鼠标)。
我已经尝试过以下方法:
In XNA:
在 WinForm 中:
捕获事件,用 Windows 窗体中常见的键盘和鼠标事件获取的数据填充 KeyboardState 和 MouseState。
在 OnPaint 上,调用 Game.RunOnFrame()
从游戏中获取 RenderTarget2D(作为纹理)。
锁定纹理的数据,并尝试在我的用户控件的图形中逐像素地绘制它。
另一个想法是调用 Game.Run()(一个新线程)并在发送 RenderTarget2D 的 Game 中发出一个事件。
我发现存在以下问题:
如果我调用 Game.Run() 我无法隐藏游戏的窗口(它显示为黑色,因为我正在重定向渲染)
Game.Run() 必须在不同的线程上调用,因为它启动一个新的事件循环(它调用应用程序方法),然后我从创建它的不同线程在用户控件中进行绘制(坏,坏)
使用 Color、Vector4 甚至 Rgba32 锁定 RenderTarget2D 似乎对我不起作用(它说“结构大小错误”)
有任何想法吗?
提前致谢。
xna 的网站上有一个关于在 winform 中嵌入 xna 的很棒的代码示例。它会引导您完成所有步骤。我为 Xbox 制作游戏,但我将其用于我们为引擎制作的关卡编辑器。
http://xbox.create.msdn.com/en-US/education/catalog/sample/winforms_series_1 http://xbox.create.msdn.com/en-US/education/catalog/sample/winforms_series_1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)