2017-06-27 59 views
-3

因此,我在我的播放器類中獲得了很多值,並且我使用GUI文本驗證了每個值,但是現在我想要將它們排列在背景圖像的屏幕中並且只有當玩家在鍵盤上按下「C」鍵時纔會彈出,我怎樣才能通過切換鍵來將畫布父項的子項設置爲可見/不可見?我檢查了底部的「添加新事件類型」選項,但沒有選擇僅用於鍵碼的鼠標選項。如何打開統一按鍵上的菜單

回答

2

創建一個存儲GameObjects列表的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 <>從某處獲取對象。

+0

非常感謝! –

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 
    } 
} 
相關問題