2015-05-19 98 views
1

我能看到的UI效果,當我創建一個空的遊戲對象,附上腳本它包含下面的代碼,然後按下播放:OnGUI和鍵按下

public class OnGUI_test : MonoBehaviour 
{ 
    void OnGUI() 
    { 
      GUILayout.BeginArea(new Rect(10, 10, 100, 100)); 
      GUILayout.Button("Click me!"); 
      GUILayout.EndArea(); 
    } 
} 

但爲什麼,下面沒有按」當我嘗試添加代碼來檢查按鍵時運行嗎?

public class OnGUI_test : MonoBehaviour 
{ 
    void OnGUI() 
    { 
     if (Input.GetKeyDown(KeyCode.Escape)) 
     { 
      GUILayout.BeginArea(new Rect(10, 10, 100, 100)); 
      GUILayout.Button("Click me"); 
      GUILayout.EndArea(); 
     } 
    } 
} 

我在做什麼錯,我該如何糾正它看到Esc按下時的按鈕?

謝謝

+4

閱讀文檔:http://docs.unity3d.com/ScriptReference/Input.GetKeyDown.html'Input.GetKeyDown'需要從'Update'函數中調用,並在每個新的框架上重置。 –

+1

它不需要從更新中調用,以像GUI事件那樣「需要」從OnGUI中調用,要知道在OnGUI中的KeyDown事件之後是否保留一個鍵的唯一方法是緩存KeyDown和KeyUp事件期間的值,或者在每個OnGUI調用中使用Input.GetKey。 –

回答

1

爲了只有當退出按鈕被按下檢查繪製GUI元素Input.GetKey(KeyCode.Escape)那麼它不會得到重置每一幀上,當按Escape

1

只需將始終返回true從GetKeyDown刪除Down

如果您想在Escape按鍵之間保留,請在每個GetKeyDown上切換一個標誌(如isPanelVisible),然後在標誌爲true時繪製UI。

+0

謝謝Geri。有用的建議使用'isPanelVisible' – Joshua