我一直在尝试使用SharpDX.DirectInput dll将DirectInput实现为统一,但是当我创建一个操纵杆时,它会给我一个错误:
SharpDXException: HRESULT: [0x80070057], Module: [General], ApiCode: [E_INVALIDARG/Invalid Arguments], Message: The parameter is incorrect.
这是我的代码:
using System;
using UnityEngine;
using SharpDX.DirectInput;
namespace KurdifyEngine.Input
{
static class Direct
{
public static DirectInput directInput;
public static Guid directGuid;
public static Joystick directGamepad ;
internal static void Initialize()
{
// Initialize DirectInput
directInput = new DirectInput();
directGuid = Guid.Empty;
DirectUpdate();
}
internal static void DirectUpdate()
{
// search for Gamepad
foreach (var deviceInstance in directInput.GetDevices(SharpDX.DirectInput.DeviceType.Gamepad, DeviceEnumerationFlags.AttachedOnly))
directGuid = deviceInstance.InstanceGuid;
}
if (directGuid != Guid.Empty)
{
directGamepad = new Joystick(directInput, directGuid);
}
}
}
}
当我创建操纵杆时发生错误:
directGamepad = new Joystick(directInput, directGuid);
答案 0 :(得分:1)
我们一直在为Unity产品开发异乎寻常的控制器支持,并在完全相同的行上遇到了同样的问题(SharpDXException:HRESULT:[0x80070057])。
我们尝试通过修复它来重新编译SharpDX,就像在这个github帖子中解释的那样:https://github.com/sharpdx/SharpDX/issues/406但是在DirectX(2010年6月)SDK中遇到了其他问题。
我们刚刚找到了一种使用此项目中包含的库(这是Kerbal Space Program中异域控制器支持的附加组件)来编译Unity项目的方法:https://github.com/pbatard/AltInput只需在库下选择.dll /,用这些替换旧的.dll,你很高兴去!