如何将Android键码映射到Unity键码?



我正试图让Vizux M400的触摸板在Unity中工作。Vuzix在Android上运行,我知道例如触摸板向前滑动是用Android keycode KEYCODE_DPAD_RIGHT(22)处理的。

我如何将这个键码映射到Unity中的键码,以便我可以访问它?我听说我可能需要为此创建一个插件,但我不知道从哪里开始创建这样的插件。(侧面信息:在触摸屏上点击被接收为Mouse0在Unity中,但用2个手指点击是不被识别的。所以我猜这些在默认情况下没有映射)

任何帮助是感激的,谢谢你已经!

我没有设备,所以我很难测试。通常,您可以使用以下命令检查任何可识别设备的KeyCode。

// Put this in Update OR OnGUI
if (Input.anyKeyDown)
{
Event e = Event.current;
if (e.isKey)
{
Debug.Log(e.keycode.ToString())
}
}

找到键码后,使用以下代码检查状态:

KeyCode KEYCODE_DPAD_RIGHT = (KeyCode)(<insert your found keycode>)
if (SystemInfo.deviceModel.ToLower().Contains("vuzix"))
{
if (Input.GetKeyDown(KEYCODE_DPAD_RIGHT))
{
// Do anything
}
}

编辑1

我相信你可以通过明确地告诉Unity检查不同的KeyCodes来实现这一点:

for (int i = 0; i < 1000; i++)
{
try
{
if (Input.GetKeyDown((KeyCode)i))
{
j++;
dText.text = j +" with: "+ i.ToString();
Debug.Log("Working");
break;
}
}
catch
{
}
}

编辑2

在更新和垃圾邮件中运行此代码,点击您的按钮和滑动/触摸动作。您可能会得到一个提示,显示该操作已被识别,并且您可能会确认在默认情况下,这些操作实际上映射到某些键码。

解决方案就是禁用Vuzix M400s触摸板的鼠标功能。可以在设备设置中完成。

这些是触摸板的KeyCodes

private const KeyCode _oneFingerTapKeyCode = (KeyCode)330;
private const KeyCode _oneFingerHoldKeyCode = (KeyCode)319;
private const KeyCode _oneFingerSwipeBackKeyCode = (KeyCode)276;
private const KeyCode _oneFingerSwipeForwardKeyCode = (KeyCode)275;
private const KeyCode _oneFingerSwipeUpKeyCode = (KeyCode)273;
private const KeyCode _oneFingerSwipeDownKeyCode = (KeyCode)274;
private const KeyCode _twoFingerTapKeyCode = (KeyCode)27;
private const KeyCode _twoFingerHoldKeyCode = (KeyCode)278;
private const KeyCode _twoFingerSwipeForwardKeyCode = (KeyCode)127;
private const KeyCode _twoFingerSwipeBackKeyCode = (KeyCode)8;

我已经在一个不同的线程中看到它们了,但我认为它们没有工作,但这只是鼠标输入。

最新更新