【问题标题】:Ctrl, Alt, Cmd and Shift key not recognized on mac (Unity 3D)Mac 上无法识别 Ctrl、Alt、Cmd 和 Shift 键(Unity 3D)
【发布时间】:2021-08-02 10:27:53
【问题描述】:

我正在使用 unity 3D 在 Mac 上导出 Windows 游戏,但遇到一些键绑定问题:CTRLALTCMDSHIFT 键完全被识别(没有错误)。

我使用以下代码查看是否检测到任何内容,它适用于所有键,除了 CTRLALTCMD 和 SHIFT.

void OnGUI() 
    {
        Event e = Event.current;

            //vérifier si une touche est bien pressée
            if (e.isKey)
            {
                Debug.Log("Detected key code: " + e.keyCode);
                txt.text = e.keyCode.ToString();
                txt2.text = "normal";
            }

            if(e.modifiers == EventModifiers.Alt)
            {
                txt.text = e.keyCode.ToString();
                txt2.text = "modif";
            }
    }

有没有办法使这项工作?提前致谢。

【问题讨论】:

  • cmd/alt/ctrl 是键修饰符。查找事件修饰符标志
  • @MarekH 我尝试了你的想法,但仍然无法识别。我使用以下代码制作了一个测试代码:e.modifiers == EventModifiers.Alt 只是为了查看是否检测到 alt,不,它不是(它在 windows 上但不在 macOS 上)。
  • 你是和修饰符一起按键吗?你能更新一下你检查修饰符的代码吗?
  • @MarekH 不,只按一个​​键...更新了代码。
  • 如果你只按修饰键,我不确定是否会触发/传递事件

标签: macos unity3d keycode


【解决方案1】:

好的,在测试了一些东西之后,我想我注意到了一些东西。修饰键在 macOS 上似乎不会产生任何键码(使用以前的方法),但可以通过搜索相同的键码来检测。

我最终得到的解决方案显然不是最佳的,但有效:我必须测试修饰符的每个键码以查看它们是否被按下并手动为其分配相应的键码(是的,这很愚蠢)......

这是以下代码的继承:

if(Input.GetKeyDown(Keycode.LeftAlt))
{
newKey = Keycode.LeftAlt;
}

我知道这样做真的很愚蠢,但这是迄今为止唯一有效的方法。感谢您的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-01
    • 1970-01-01
    • 2018-06-30
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    相关资源
    最近更新 更多