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