【问题标题】:Unity - handle 2 input for keybinding in my gameUnity - 在我的游戏中处理 2 个键绑定输入
【发布时间】:2019-03-27 11:37:16
【问题描述】:

在我的游戏中你可以控制单位,每个单位都有法术,我们想给用户改变他不同法术的键绑定的可能性。

目标是例如有可能为一个拼写输入组合(例如:“ctrl + H”发送拼写)

我在 unity Store 上找到了一个名为“Rewired”的插件,它似乎可以做到这一点,但它的成本是 40 欧元,并且处理了太多我不想要的功能。

所以我尝试创建自己的脚本来解决我的问题,但我不知道如何创建按下的 2 个键码的组合。

这是我下面的脚本,你知道如何创建它吗?

KeyCode key;
KeyCode curModifiersKey;(alt, ctrl)
KeyCode nonModifierKey;
KeyCode firstModifierKeyInfo;
KeyCode finalKey;

public void DetectedSeveralInput(KeyCode key)
{
    if (key != KeyCode.AltGr)
    {
        if (key == KeyCode.LeftAlt || key == KeyCode.RightAlt || key == KeyCode.LeftControl || key == KeyCode.RightControl)
        {
            if (modifierPressedCount == 0)
            {
                firstModifierKeyInfo = key;
                modifierPressedCount += 1;
            }
            curModifiersKey = key;
        }
        nonModifierKey = key;
        //finalKey = curModifiersKey + nonModifierKey
        LogVariables();
    }
    else
    {
        Debug.Log("AltGR pressed");
        return;
    }
}

【问题讨论】:

    标签: c# unity3d key-bindings hotkeys


    【解决方案1】:

    检测多个按键的操作是这样的

    void Update()
    {
        bool shiftPressed = Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift);
        bool keyPressed = Input.GetKeyUp( /* other key code here */ );
        if(shiftPressed && keyPressed)
        {
            //Do logic here
        }
    }
    

    我使用 Input.GetKey 检查 shift 键,但通过使另一个检查 Input.GetKeyUp 确保逻辑只发生一次,因此它只会在键释放时为真。

    【讨论】:

    • 其实keyPressed应该是Input.GetKeyDown(/* something */),因为你希望动作在按键被按下的时候执行,而不是被释放。
    【解决方案2】:

    感谢 Tricko 的回答。

    但问题是当你有大约 10 个单位,他们有 4 个咒语时,我无法使用这个系统。 我对它的参考是星际争霸 2,当您还可以添加鼠标按钮或 ctrl/shift/alt 时,您有一个完整的面板用于您自己的键绑定。

    这就是为什么我想要将 2 个输入保存为一个(如果可能的话)并将其与我的单位 Y 的 speel n°X 相关联的原因

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-09
      • 2015-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多