Использование нескольких ключевых входов одновременно приводит к неожиданному поведению в Unity C # - PullRequest
0 голосов
/ 03 марта 2019

в приведенном ниже коде невозможно напечатать «FBleftcontrol», также в зависимости от порядка и комбинации нажатых клавиш иногда невозможно напечатать другие строки

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour
{
    bool LeftControl = false;
    bool LeftShift = false;
    bool LeftAlt = false;
    // Update is called once per frame
    void Update()
    {
        LeftControl = Input.GetKey(KeyCode.LeftControl);
        LeftShift = Input.GetKey(KeyCode.LeftShift);
        LeftAlt = Input.GetKey(KeyCode.LeftAlt);

        if (LeftAlt || LeftShift) fb();
        else fa();
    }

    private void fb()
    {
        print("fb");
        if (LeftControl)
        {
            if (Input.GetKeyDown(KeyCode.Alpha1)) print("leftcontrol");
        }
        else
        {
            if (Input.GetKeyDown(KeyCode.Alpha1)) print("NOleftcontrol");
        }
    }

    private void fa()
    {
        print("fa");
        if (LeftControl)
        {
            if (Input.GetKeyDown(KeyCode.Alpha1)) print("leftcontrol");
        }
        else if(LeftShift)
        {
            if (Input.GetKeyDown(KeyCode.Alpha1)) print("leftshift");
        }
    }
}

Вещи, которые я пробовал: защелкабулевы;использовать все возможные комбинации getkey / getkeydown / getkeyup;поместите все это в обновление и забудьте о вызове функций

1 Ответ

0 голосов
/ 04 марта 2019

Unity Editor крадет ваш фокус клавиатуры, потому что большинство клавиш-модификаторов привязаны к его GUI.Попробуйте использовать тот же код с KeyCode.A, KeyCode.S, KeyCode.C вместо Alt, Shift, Control, и ваш код будет работать должным образом.

Это должно происходить только в редакторе, а не в окончательной сборке.

К сожалению, я не знаю ни одного решения, чтобы избежать этого в Редакторе: я просто использовал бы различные привязки клавиш во время разработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...