OnGUI() gets called more than once in a single frame. I always used a class variable to store the GUI.Button() result, and used that in my conditions. ex: Code (csharp): using UnityEngine; using System.Collections; public class MyOnGUI : MonoBehaviour { bool showDialog_AppQuit = false; bool showDialog_AppQuit_Yes = false; bool showDialog_AppQuit_No = false; void OnGUI( ) { if( showDialog_AppQuit == false ) { showDialog_AppQuit = GUI.Button( new Rect(10,10,120,20), "Quit Game!" ); } else { GUI.Label( new Rect(10,10,180,20), "Do you really what to Quit?" ); showDialog_AppQuit_Yes = GUI.Button( new Rect(35,30,45,20), "Yes" ); showDialog_AppQuit_No = GUI.Button( new Rect(85,30,45,20), "No" ); if( showDialog_AppQuit_Yes ) { if( Application.isEditor ) UnityEditor.EditorApplication.isPlaying = false; else Application.Quit(); } if( showDialog_AppQuit_No ) showDialog_AppQuit = false; } } }