C# cxna-用户输入
我正在用C XNA进行3D模拟,我使用图像\文本文件加载数据 我想为用户提供选择文件的选项,然后我的模拟将加载并使用该文件。用cxna是不可能的 我能够使用教程将3D XNA应用程序嵌入WinForm中,这对我来说很有效,但问题是基于键盘的交互根本不顺畅。它不再像游戏一样反应了 如何在游戏中实现文件浏览和按钮等其他功能 我可以有一个逻辑来监控用户的输入,并使用它来提供像游戏中的文件浏览这样的功能,但这太麻烦了。实现这一目标是否容易。如果不使用XNA,则可能采用其他方式,如常规XNA中的DirectX。游戏类通常以每秒60帧的速度定期调用绘制和更新函数 XNA WinForms示例的工作方式略有不同。没有更新/绘制循环。取而代之的是一个Draw函数。只有当控件需要重新绘制时才调用该函数。这意味着: 您没有机会定期调用Keyboard.GetState,如果这是您进行键盘输入的方式的话 即使您使用的是事件驱动的非XNA输入,您的窗口也不会定期重新绘制,因此在XNA控件最终重新绘制之前,您可能无法实际看到输入的结果 幸运的是,有一种方法可以强制控件快速重新绘制。请看第二页。你会发现它正在制作动画,换句话说:它正在频繁更新。它是如何做到的?查看ModelViewerControl.cs中的以下代码: 它使用秒表来跟踪经过了多少时间,因为没有游戏类可以帮你完成。并且它在Application.Idle事件上失效——换句话说,当它不忙于处理某个内容时,它会要求重新绘制 当然,第一个WinForms示例的文档中已经解释了这一点。在底部的“动画”下C# cxna-用户输入,c#,xna,file-browser,C#,Xna,File Browser,我正在用C XNA进行3D模拟,我使用图像\文本文件加载数据 我想为用户提供选择文件的选项,然后我的模拟将加载并使用该文件。用cxna是不可能的 我能够使用教程将3D XNA应用程序嵌入WinForm中,这对我来说很有效,但问题是基于键盘的交互根本不顺畅。它不再像游戏一样反应了 如何在游戏中实现文件浏览和按钮等其他功能 我可以有一个逻辑来监控用户的输入,并使用它来提供像游戏中的文件浏览这样的功能,但这太麻烦了。实现这一目标是否容易。如果不使用XNA,则可能采用其他方式,如常规XNA中的Direc
另一个额外的答案是:在常规XNA游戏中使用WinForms中的OpenFileDialog没有什么可以阻止您。只需添加对System.Windows.Forms的引用,创建该对象的实例,在其上设置适当的属性,然后调用ShowDialog。您使用哪种输入方法?Windows窗体鼠标和键盘事件,还是XNA输入处理?我猜是因为教程,您尝试使用WinForms事件。虽然可以使它平滑。您还可以使用XNA的输入处理。也许你可以为你的实际输入处理提供更多的代码。在没有看到你正在做什么的情况下,这可能是一个你需要双重缓冲winform的问题吗?我是不是很愚蠢。。备选奖金答案我为什么不这么做。。哈哈,非常感谢。这意味着我还可以添加菜单条等等。我会处理任何需要从XNA游戏中提取表单对象的事情。文件对话框没有,但我想添加菜单条等会有。对不起,我不明白你的意思,可能是因为英语不是我的第一语言。。很抱歉您是否可以重新表述您最后的评论,以添加您通常设置的MenuStrip Form.main MenuStrip。但是从XNA窗口获取表单对象通常是不应该做的事情,即使可以。
protected override void Initialize()
{
// Start the animation timer.
timer = Stopwatch.StartNew();
// Hook the idle event to constantly redraw our animation.
Application.Idle += delegate { Invalidate(); };
}