Browse Source

Rework the pause menu example in pausing_games.rst

Ershn 1 year ago
parent
commit
fc7a41fc48
1 changed files with 20 additions and 17 deletions
  1. 20 17
      tutorials/scripting/pausing_games.rst

+ 20 - 17
tutorials/scripting/pausing_games.rst

@@ -89,47 +89,50 @@ paused physics will **NOT** work for it by default. As stated earlier this is
 because the physics servers are turned off. The physics servers can be made
 active while the game is paused by using their ``set_active`` methods.
 
-Pause Menu Example
+Pause menu example
 ------------------
 
-Here is an example of a pause menu. Create a popup or panel with controls
-inside, and set its pause mode to "When Paused" then hide it. By setting the
-root of the pause popup to "When Paused", all children and grandchildren will
-inherit that state. This way, this branch of the scene tree will continue
-working when paused.
+Start by creating a button that will be used to pause the game.
 
-Finally, make it so when a pause button is pressed (any button will do),
-enable the pause and show the pause screen.
+Create a menu containing a close button, set the **Process Mode** of the menu's root node
+to **When Paused**, then hide the menu. Since the process mode is set to **When Paused**
+on the root node, all its children and grandchildren will inherit that process mode.
+This way, all the nodes in the menu will start processing when the game is paused.
+
+Attach a script to the menu's root node, connect the pause button created earlier to a new method in
+the script, and inside that method pause the game and show the pause menu.
 
 .. tabs::
  .. code-tab:: gdscript GDScript
 
     func _on_pause_button_pressed():
         get_tree().paused = true
-        $pause_popup.show()
+        show()
 
  .. code-tab:: csharp
 
-    public void _on_pause_button_pressed()
+    private void OnPauseButtonPressed()
     {
         GetTree().Paused = true;
-        GetNode<Control>("pause_popup").Show();
+        Show();
     }
 
-To unpause, do the opposite when the pause screen is
-closed:
+Finally, connect the menu's close button to a new method in the script. Inside that method,
+unpause the game and hide the pause menu.
 
 .. tabs::
  .. code-tab:: gdscript GDScript
 
-    func _on_pause_popup_close_pressed():
-        $pause_popup.hide()
+    func _on_close_button_pressed():
+        hide()
         get_tree().paused = false
 
  .. code-tab:: csharp
 
-    public void _on_pause_popup_close_pressed()
+    private void OnCloseButtonPressed()
     {
-        GetNode<Control>("pause_popup").Hide();
+        Hide();
         GetTree().Paused = false;
     }
+
+You should now have a working pause menu.