如何将 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;
我已经在另一个线程的某个地方看到过它们,但我认为它们不起作用,但这只是鼠标输入。
我正在尝试让 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;
我已经在另一个线程的某个地方看到过它们,但我认为它们不起作用,但这只是鼠标输入。