我试图使多人游戏角色选择屏幕仅可用于Unity中的控制器,但是单击按钮选择角色后,我需要再次快速单击几次以使其起作用,好像有滞后
我正在使用重新连接的输入框架,并使用自定义事件系统来允许一个UI上有多个玩家。
这是我在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);
}
}
在没有重新布线和自定义事件系统的情况下,它可以作为单个玩家选择屏幕正常工作。我的猜测是,在使用新系统进行Input.GetKey
检查之后对Input.GetKeyDown
或OnClick()
进行检查效率不高,因为有太多的延迟。我尝试查找某种按键记录,发现KeyCode
但这是键盘操作。有任何想法吗?