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

How to map an Android keycode to a Unity keycode?

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

处理的

现在如何将此键码映射到 Unity 中的键码,以便我可以访问它?我听说我可能需要为此创建一个插件,但我不知道从哪里开始创建这样一个插件。 (附带信息:在 Unity 中触摸屏上的点击被接收为 Mouse0,但是无法识别用 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

运行 此代码在更新和垃圾邮件中单击您的按钮和 swiping/touching 操作。您可能会收到一个提示,表明该操作已被识别,并且您可以确认这些操作实际上已默认映射到某些键码。

解决方法很简单,就是停用 Vuzix M400s 触摸板的鼠标功能。可以在设备设置中完成。

因此,这些是触摸板的键码:

    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;

我已经在另一个线程的某个地方看到过它们,但我认为它们不起作用,但这只是鼠标输入。