Up to date
This page is up to date for Godot 4.3.
If you still find outdated information, please open an issue.
Pausing games and process mode
Introduction
Dans la plupart des jeux, il est souhaitable, à un moment donné, d'interrompre le jeu pour faire autre chose, comme prendre une pause ou changer des options. La mise en œuvre d'un contrôle fin pour ce qui peut être interrompu (et ce qui ne peut pas) est beaucoup de travail, donc un cadre simple pour la pause est fourni dans Godot.
Comment fonctionne la pause
Pour activer le mode pause, l'état de pause doit être défini. Cela se fait en assignant true à la propriété SceneTree.paused :
get_tree().paused = true
GetTree().Paused = true;
Faire ceci causera deux choses. Premièrement, la physique 2D et 3D sera arrêtée pour tous les nœuds. Deuxièmement, le comportement de certains nœuds s'arrêtera ou commencera selon leur mode de traitement.
Note
Les serveurs de physique peuvent être rendus actifs pendant que le jeu est en pause en utilisant leurs méthodes set_active.
Modes de traitement
Each node in Godot has a "Process Mode" that defines when it processes. It can be found and changed under a node's Node properties in the inspector.
Vous pouvez aussi changer la propriété avec du code :
func _ready():
process_mode = Node.PROCESS_MODE_PAUSABLE
public override void _Ready()
{
ProcessMode = Node.ProcessModeEnum.Pausable;
}
Voici ce que chaque mode indique à un nœud :
Inherit : L'exécution dépend de l'état du parent, du grand-parent, etc. Le premier parent qui a un état n'étant pas Inherit.
Pausable: Process the node (and its children in Inherit mode) only when the game is not paused.
WhenPaused: Process the node (and its children in Inherit mode) only when the game is paused.
Always: Process the node (and its children in Inherit mode) no matter what. Paused or not, this node will process.
Disabled: The node (and its children in Inherit mode) will not process at all.
Par défaut, tous les nœuds ont cette propriété avec l'état "Inherit". Si le parent est défini sur "Inherit", alors le grand-parent sera vérifié, et ainsi de suite. En fin de compte, si un état ne peut être trouvé dans aucun des grands-parents, l'état de pause dans SceneTree est utilisé. Cela signifie que, par défaut, lorsque le jeu est mis en pause, chaque nœud sera mis en pause. Plusieurs choses se passent lorsqu'un nœud arrête le traitement.
The _process, _physics_process, _input, and _input_event functions
will not be called. However signals still work and cause their connected function to
run, even if that function's script is attached to a node that is not currently being processed.
Animation nodes will pause their current animation, audio nodes will pause their current audio stream, and particles will pause. These resume automatically when the game is no longer paused.
Il est important de noter que même si un noeud calcule pendant que le jeu est en pause, la physique ne marchera pas pour lui par défaut. Comme indiqué plus haut, c'est parce que les serveurs de physique sont éteints. Les serveurs de physique peuvent être rendus actifs pendant que le jeu est interrompu en utilisant leurs méthodes set_active.