Я пытаюсь сделать экран выбора многопользовательского персонажа пригодным для использования с контроллерами только в 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
, но это клавиатура.Есть идеи?