2012-02-20 112 views
1

我使用的DirectInput与XNA但由于一些奇怪的原因,当我已经实现下面的代码我的比赛将无法启动:游戏无法启动

DeviceList gameControllerList = Manager.GetDevices(DeviceClass.GameControl, EnumDevicesFlags.AttachedOnly); 

这确实打破了我的比赛,注释行工作虽然离开它打破了它。我完全不知道为什么。我有Microsoft.DirectX.DirectInput引用和一切。我甚至开始了一个全新的项目,只是进入了这条线,但在比赛开始时没有运气。

这实际上是我的完整代码,我只是从Game1()的initialize方法中调用Input.InitializeController()

using System; 
using Microsoft.DirectX.DirectInput; 

namespace InputTesting{ 
    class Input{ 
     public void InitializeController(){ 
      DeviceList gameControllerList = Manager.GetDevices(DeviceClass.GameControl, EnumDevicesFlags.AttachedOnly); 
     } 
    } 
} 

有没有人知道这个交易是与这个我完全难住。

谢谢!

+0

你能提供更多的细节吗?它会崩溃吗?抛出一个毫无意义的例外?如果您在调试器中传递该行,会发生什么情况? – 2012-02-20 01:41:45

+0

当然我会尝试。游戏只是无法启动,我必须点击停止调试按钮关闭它。因此它不会因为没有启动而崩溃。没有任何错误抛出。有趣的事情可能是这样的:我已经将输出类型更改为控制台我相信您熟悉这一点。它使得一旦我点击调试按钮,控制台和游戏窗口都会出现。随着这条线进入控制台出现,但实际的游戏窗口没有。 – MrSplosion 2012-02-20 01:50:11

+0

会重新安装DirectX SDK的帮助? – MrSplosion 2012-02-20 02:18:48

回答

2

如果你使用XNA 4.0那么你的问题是由于XNA不支持DirectInput的正确。

为了使您的设备与您的程序一起工作,您需要回滚到XNA 3.1或使用允许直接输入4.0的包装,我建议使用包装SlimDX。