unity: альтернатива Input.GetKey в символе Выбрать - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь сделать экран выбора многопользовательского персонажа пригодным для использования с контроллерами только в Unity, но после нажатия кнопки, чтобы выбрать персонажа, мне нужно несколько раз быстро щелкнуть мышью, чтобы он заработал, как будто бы произошла задержка.

Я использую переписанную структуру ввода и использую пользовательские системы событий, чтобы разрешить нескольким игрокам на одном интерфейсе.

Вот мой код на C #:

//index is given in the onclick() unity manager
    public void select (int index)
    {
        Debug.Log(index);
        //we check that index is in the range of the models list and is not equal to selected_p1/p2
        if(index == SelectCharacter.selected_p1 || index == selectedCharacter.selected_p2 ||
           index < 0 || index >= SelectCharacter.models.Count)
            return;

        //we check if the controller used is P1 and update the visual and variables
        if(Input.GetKeyDown("joystick 1 button 0"))
        {
            Debug.Log("mouse button or joystick 1 used");
            SelectCharacter.models[SelectCharacter.selectionIndex].SetActive(false);
            SelectCharacter.selected_p1 = index;
            SelectCharacter.selectionIndex = index;
            SelectCharacter.models[SelectCharacter.selectionIndex].SetActive(true);
        }

        //we check if the controller used is P2 and update the visual and variables
        if(Input.GetKeyDown("joystick 2 button 0"))
        {
            Debug.Log("joystick 2 used");
            SelectCharacter.models[SelectCharacter.selectionIndex + (SelectCharacter.models.Count / 2)].SetActive(false);
            SelectCharacter.selected_p2 = index;
            SelectCharacter.selectionIndex = index;
            SelectCharacter.models[SelectCharacter.selectionIndex + (SelectCharacter.models.Count / 2)].SetActive(true);
        }

    }

itработал нормально, как экран выбора одного игрока без перемонтированной и настраиваемой системы событий.Я предполагаю, что проверка Input.GetKey или Input.GetKeyDown после проверки OnClick() с новой системой неэффективна, потому что слишком много лагов.Я попытался найти какой-то журнал нажатых клавиш и нашел KeyCode, но это клавиатура.Есть идеи?

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