unity:在字符Select中替代Input.GetKey

时间:2018-11-29 21:11:07

标签: c# user-interface unity3d multiplayer

我试图使多人游戏角色选择屏幕仅可用于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.GetKeyDownOnClick()进行检查效率不高,因为有太多的延迟。我尝试查找某种按键记录,发现KeyCode但这是键盘操作。有任何想法吗?

0 个答案:

没有答案