Unity-处理我的游戏中用于绑定的2个输入

时间:2018-10-23 09:24:28

标签: c# unity3d key-bindings hotkeys

在我的游戏中,您可以控制单位,每个单位都有法术,我们希望为用户提供更改其不同法术的键绑定的可能性。

目标是使示例有可能对一个咒语进行组合输入(例如:“ ctrl + H”发送该咒语)

我在统一商店中找到了一个名为“ Rewired”的插件,该插件似乎可以做到这一点,但是它的价格为40欧元,可以处理太多我不想要的功能。

因此,我尝试创建自己的脚本来解决我的问题,但是我不知道如何创建两个按键代码的组合。

这是我的脚本,请问您如何创建此脚本?

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;
    }
}

2 个答案:

答案 0 :(得分: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来确保逻辑仅发生一次,因此只有在释放键时该逻辑才成立。

答案 1 :(得分:0)

感谢特里科的回答。

但是问题是,当您有10个拥有4个咒语的单位时,我无法执行此系统。 我的参考资料是《星际争霸2》,当您可以添加鼠标按钮或同时按下ctrl / shift / alt时,您会在整个面板上进行自己的按键绑定。

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