Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Mettre en pause des jeux et le mode de traitement
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.
Les nœuds d'animation vont mettre en pause leur animation actuelle, les nœuds audio vont mettre en pause leur flux audio actuel, et les particules vont se mettre en pause. Ils reprendront automatiquement quand le jeu ne sera plus en pause.
Il est important de noter que même si un nœud 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.