如何在按键上打开菜单

时间:2017-06-27 01:39:23

标签: c# unity3d

所以我在我的播放器类中获得了很多值,并且我已经使用GUI文本验证了每个值,但现在我想在屏幕上用背景图像排列它们,并且只有当播放器按下“ C“键盘上的键,如何通过切换键来设置画布父级的子项是可见/不可见的?我检查了底部的“添加新事件类型”选项,但没有选项仅用于键码选项。

3 个答案:

答案 0 :(得分:2)

创建一个存储游戏对象列表的MonoBehaviour。给这个MonoBehaviour一个方法Show和一个方法Hide。在这些方法中,迭代列表中的所有元素并在其上调用SetActive。

public class UICollection : MonoBehaviour
{
    [SerializeField]
    private GameObject[] elements;
    private bool visible;

    public bool Visible
    {
        get { return visible; }
    }

    public void Show()
    {
        foreach (GameObject item in elements)
        {
            item.SetActive(true);
        }
    }

    public void Hide()
    {
        foreach (GameObject item in elements)
        {
            item.SetActive(false);
        }
    }
}

只需将组件添加到播放器作为参考。然后你可以在你的玩家类中做这样的事情:

[SerializeField]
UICollection ui;

void Update()
{
    if (Input.GetKeyDown(KeyCode.C))
        if (ui.Visible)
            ui.Hide();
        else
            ui.Show();
}

我希望这对你有用。您可能必须使用GetComponent<>从某处获取Object,具体取决于您的设置。

答案 1 :(得分:0)

public void Update()
{
    if (Input.GetButtonDown(KeyCode.C))
    {            
        var gameObject = GameObject.Find("..."); // The parent game object to toggle
        gameObject.SetActive(false); //true or false
    }
}

答案 2 :(得分:0)

// Brackey的Uri.OriginalString @ 9:29

// goto:项目设置>输入>并创建一个键(复制数组并重命名) 将其命名为库存

然后在更新中查找按键

if(Input.GetButtonDown("Inventory"))
        {
            inventoryUI.SetActive(!inventoryUI.activeSelf);
        }

    }