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.

@GDScript

Constantes, fonctions et annotations intégrées à GDScript.

Description

Une liste de fonctions utilitaires et d'annotations, utilisables depuis n'importe quel script écrit en GDScript.

Pour voir la liste des fonctions et constantes globales disponibles dans n'importe quel langage, voir @GlobalScope.

Tutoriels

Méthodes

Color

Color8(r8: int, g8: int, b8: int, a8: int = 255)

void

assert(condition: bool, message: String = "")

String

char(code: int)

Variant

convert(what: Variant, type: Variant.Type)

Object

dict_to_inst(dictionary: Dictionary)

Array

get_stack()

Dictionary

inst_to_dict(instance: Object)

bool

is_instance_of(value: Variant, type: Variant)

int

len(var: Variant)

Resource

load(path: String)

int

ord(char: String)

Resource

preload(path: String)

void

print_debug(...) vararg

void

print_stack()

Array

range(...) vararg

bool

type_exists(type: StringName)


Constantes

PI = 3.14159265358979 🔗

Constante qui représente le nombre de fois que le diamètre d'un cercle correspond à son périmètre. Elle équivaut à TAU / 2, soit 180 degrés de rotation.

TAU = 6.28318530717959 🔗

La constante du cercle, c'est à dire la circonférence du cercle unité en radians. C'est l'équivalent de PI * 2 ou de 360 degrés en rotation.

INF = inf 🔗

L'infini positif représenté en virgule flottante. C'est le résultat d'un nombre à virgule flottante divisé par 0.0. L'infini négatif est représenté par -INF. Diviser par -0.0 donnera une infinité négative si le numérateur est positif, donc diviser par 0.0 n'est pas la même chose que de diviser par -0.0 (même si 0.0 == -0.0 est toujours true).

Attention : L'infini numérique est un concept qui n'existe que pour les nombres à virgule flottante, et n'a pas d'équivalent pour les entiers. Diviser un nombre entier par 0 ne résultera pas en INF et entraînera toujours une erreur d'exécution.

NAN = nan 🔗

"Not a Number" (littéralement : pas un nombre), un nombre flottant (nombre à virgule) invalide. Il est renvoyé par certaines opérations invalides, comme la division flottante de 0.0 par 0.0.

NAN a des propriétés spéciales, notamment que != renvoie toujours true, tandis que les autres opérateurs renverront toujours false. Cela est vrai même en le comparant à lui-même (NAN == NAN renvoie false et NAN != NAN renvoie true). À cause de cela, vous devez utiliser @GlobalScope.is_nan() pour vérifier si un nombre est égal à NAN.

Attention : "Not a Number" est un concept seulement pour les nombres flottants et n'a pas d’équivalent pour les nombres entiers. Diviser un nombre entier 0 par 0 ne donnera pas un NAN et résultera à la place en une erreur d’exécution.


Annotations

@abstract() 🔗

Marque une classe ou une méthode comme abstraite.

Une classe abstraite est une classe qui ne peut pas être instanciée directement. À la place, elle est destinée à être héritée par d'autres classes. Essayer d’instancier une classe abstraite résultera en une erreur.

Une méthode abstraite est une méthode qui n'a pas d'implémentation. Ainsi, un retour à la ligne ou un point virgule est attendu après l'entête de la fonction. Ceci défini un contrat auquel les classes héritées doivent souscrire, car la méthode abstraite donne une signature que les implémentations de la méthode doivent respecter.

Les classes héritées doivent donner une implémentation à toutes les méthodes abstraites, ou elle sera elle-même marquée comme abstraite. Si une classe a au moins une méthode abstraite (soit la sienne soit une non implémentée héritée), alors elle doit aussi être marquée comme abstraite. Cependant, l'inverse n'est pas vrai : une classe abstraite peut ne pas avoir de méthode abstraite.

@abstract class Forme:
    @abstract func draw()

class Cercle extends Forme:
    func draw():
        print("Dessiner un cercle")

class Carre extends Forme:
    func draw():
        print("Dessiner un carré.")

@export() 🔗

Marquez la propriété suivante comme exportée (modifiable dans le dock Inspecteur et enregistrée sur le disque). Pour contrôler le type de la propriété exportée, utilisez la notation d'indication de type.

extends Node

enum Direction {LEFT, RIGHT, UP, DOWN}

# Types intégrés.
@export var string = ""
@export var int_number = 5
@export var float_number: float = 5

# Enums.
@export var type: Variant.Type
@export var format: Image.Format
@export var direction: Direction

# Ressources.
@export var image: Image
@export var custom_resource: CustomResource

# Nœuds.
@export var node: Node
@export var custom_node: CustomNode

# Tableaux typés.
@export var int_array : Array[int]
@export var direction_array : Array[Direction]
@export var image_array : Array[Image]
@export var node_array : Array[Node]

Remarque : Les ressources et nœuds personnalisés doivent être enregistrés en tant que classes globales à l'aide de class_name, car l'inspecteur ne prend actuellement en charge que les classes globales. Sinon, un type moins spécifique sera exporté à la place.

Remarque : L'exportation de nœuds n'est prise en charge que dans les classes dérivées de Node et présente un certain nombre d'autres limitations.


@export_category(name: String) 🔗

Définir une nouvelle catégorie pour les propriétés exportées suivantes. Cela permet d'organiser les propriétés dans l'Inspector Dock.

Voir aussi @GlobalScope.PROPERTY_USAGE_CATEGORY.

@export_category("Statistics")
@export var hp = 30
@export var speed = 1.25

Note : Les catégories dans la liste de l'Inspector Dock divisent généralement les propriétés provenant de différentes classes (Node, Node2D, Sprite, etc.). Pour plus de clarté, il est recommandé d'utiliser plutôt @export_group et @export_subgroup.


@export_color_no_alpha() 🔗

Exporter une propriété Color, Array[Color], or PackedColorArray sans permettre l'édition de sa transparence (Color.a).

Voir aussi @GlobalScope.PROPERTY_HINT_COLOR_NO_ALPHA.

@export_color_no_alpha var dye_color: Color
@export_color_no_alpha var dye_colors: Array[Color]

@export_custom(hint: PropertyHint, hint_string: String, usage: BitField[PropertyUsageFlags] = 6) 🔗

Vous permet de définir un indice personnalisé, une chaîne d'indice et des drapeaux d'utilisation pour la propriété exportée. Notez qu'aucune validation n'est effectuée dans GDScript, il transmettra simplement les paramètres à l'éditeur.

@export_custom(PROPERTY_HINT_NONE, "suffix:m") var suffix: Vector3

Remarque : Quelle que soit la valeur de usage, le drapeau @GlobalScope.PROPERTY_USAGE_SCRIPT_VARIABLE est toujours ajouté, comme pour toute variable de script explicitement déclarée.


@export_dir() 🔗

Exporte une propriété String, Array[String], or PackedStringArray en tant que chemin d'accès à un répertoire. Le chemin sera limité au dossier du projet et à ses sous-dossiers. Voir @export_global_dir pour permettre de choisir dans l'ensemble du système de fichiers.

Voir aussi @GlobalScope.PROPERTY_HINT_DIR.

@export_dir var sprite_folder_path: String
@export_dir var sprite_folder_paths: Array[String]

@export_enum(names: String, ...) vararg 🔗

Exportez une propriété int, String, Array[int], Array[String], PackedByteArray, PackedInt32Array, PackedInt64Array ou PackedStringArray sous forme de liste énumérée d'options (ou de tableau d'options). Si la propriété est un int, l'index de la valeur est stocké, dans le même ordre que les valeurs fournies. Vous pouvez ajouter des valeurs explicites à l'aide de deux points. Si la propriété est un String, la valeur est stockée.

Voir également @GlobalScope.PROPERTY_HINT_ENUM.

@export_enum("Warrior", "Magician", "Thief") var character_class: int
@export_enum("Slow:30", "Average:60", "Very Fast:200") var character_speed: int
@export_enum("Rebecca", "Mary", "Leah") var character_name: String

@export_enum("Sword", "Spear", "Mace") var character_items: Array[int]
@export_enum("double_jump", "climb", "dash") var character_skills: Array[String]

Si vous souhaitez définir une valeur initiale, vous devez la spécifier explicitement :

@export_enum("Rebecca", "Mary", "Leah") var character_name: String = "Rebecca"

Si vous souhaitez utiliser des énumérations GDScript nommées, alors utilisez @export à la place :

enum CharacterName {REBECCA, MARY, LEAH}
@export var character_name : CharacterName

enum CharacterItem {SWORD, SPEAR, MACE}
@export var character_items : Array[CharacterItem]

@export_exp_easing(hints: String = "", ...) vararg 🔗

Exporte une propriété de flottant avec un widget d'éditeur de courbe. Des aides additionnelles peuvent être ajoutées pour ajuster le comportement de ce widget. "attenuation" retourne la courbe, ce qui la rend plus intuitive pour éditer des propriétés d'atténuation. "positive_only" limite les valeurs à être supérieures ou égales à zéro.

Voir aussi @GlobalScope.PROPERTY_HINT_EXP_EASING.

@export_exp_easing var transition_speed
@export_exp_easing("attenuation") var fading_attenuation
@export_exp_easing("positive_only") var effect_power
@export_exp_easing var speeds: Array[float]

@export_file(filter: String = "", ...) vararg 🔗

Exporte une propriété String, Array[String], ou PackedStringArray en tant que chemin vers un fichier. Le chemin sera limité au dossier de projet et ses sous-dossiers. Voir @export_global_file pour autoriser la sélection depuis l'ensemble du système de fichiers.

Si filter est fourni, seuls les fichiers correspondants seront disponible à la sélection.

Voir également @GlobalScope.PROPERTY_HINT_FILE.

@export_file var sound_effect_path: String
@export_file("*.txt") var notes_path: String
@export_file var level_paths: Array[String]

Note : Le fichier sera stocké et référencé en tant qu'UID, si disponible. Cela garantit que la référence est valide même lorsque le fichier est déplacé. Vous pouvez utiliser des méthodes de ResourceUID pour le convertir en chemin.


@export_file_path(filter: String = "", ...) vararg 🔗

Comme @export_file, sauf que le fichier sera stocké comme un chemin brut. Cela signifie qu'il peut devenir invalide lorsque le fichier est déplacé. Si vous exportez un chemin de Resource, envisagez d'utiliser @export_file à la place.


@export_flags(names: String, ...) vararg 🔗

Exporte une propriété entière en tant que champ de bit flag. Cela permet de stocker plusieurs valeurs "vérifiées" ou true avec une propriété, et de les sélectionner aisément depuis la barre d'outils de l'Inspecteur.

Voir également @GlobalScope.PROPERTY_HINT_FLAGS.

@export_flags("Fire", "Water", "Earth", "Wind") var spell_elements = 0

Vous pouvez ajouter des valeurs explicites en utilisant les deux-points :

@export_flags("Self:4", "Allies:8", "Foes:16") var spell_targets = 0

Vous pouvez aussi combiner plusieurs options :

@export_flags("Self:4", "Allies:8", "Self and Allies:12", "Foes:16")
var spell_targets = 0

Note : Une valeur de drapeau doit être au minimum 1 et au maximum 2 ** 32 - 1.

Note : Contrairement à @export_enum, la valeur explicite précédente n'est pas prise en compte. Dans l'exemple suivant, A est 16, B est 2, C est 4.

@export_flags("A:16", "B", "C") var x

Vous pouvez aussi l'utiliser cette annotation sur un Array[int], PackedByteArray, PackedInt32Array, ouPackedInt64Array

@export_flags("Fire", "Water", "Earth", "Wind") var phase_elements: Array[int]

@export_flags_2d_navigation() 🔗

Exporte une propriété entière en tant que champ de bits pour les calques de navigation 2D. Le widget dans le dock Inspecteur utilisera les noms des calques définis dans ProjectSettings.layer_names/2d_navigation/layer_1.

Voir aussi @GlobalScope.PROPERTY_HINT_LAYERS_2D_NAVIGATION.

@export_flags_2d_navigation var navigation_layers: int
@export_flags_2d_navigation var navigation_layers_array: Array[int]

@export_flags_2d_physics() 🔗

Exporter une propriété entière sous forme de champ de bit flag pour les couches physiques 2D. Le widget dans la barre d'outils de l'Inspecteur utilisera les noms des calques définis dans ProjectSettings.layer_names/2d_physics/layer_1.

Voir également @GlobalScope.PROPERTY_HINT_LAYERS_2D_PHYSICS.

@export_flags_2d_physics var physics_layers: int
@export_flags_2d_physics var physics_layers_array: Array[int]

@export_flags_2d_render() 🔗

Exporte une propriété entière en tant que champ de bit flag pour le calques de rendu 2D. Le widget dans la barre d'outils de l'Inspecteur utilisera les noms des calques définis dans ProjectSettings.layer_names/2d_render/layer_1.

Voir également @GlobalScope.PROPERTY_HINT_LAYERS_2D_RENDER.

@export_flags_2d_render var render_layers: int
@export_flags_2d_render var render_layers_array: Array[int]

@export_flags_3d_navigation() 🔗

Exporte une propriété int en tant que champ de bits pour des couches de navigation 3D. Le widget dans le dock Inspecteur utilisera les noms de couche définis dans ProjectSettings.layer_names/3d_navigation/layer_1.

Voir aussi @GlobalScope.PROPERTY_HINT_LAYERS_3D_NAVIGATION.

@export_flags_3d_navigation var couches_navigation: int
@export_flags_3d_navigation var tableau_couches_navigation: Array[int]

@export_flags_3d_physics() 🔗

Exporte une propriété int en tant que champ de bits pour couches physiques 3D. Le widget dans le dock Inspecteur utilisera les noms de couches définis dans ProjectSettings.layer_names/3d_physics/layer_1.

Voir aussi @GlobalScope.PROPERTY_HINT_LAYERS_3D_PHYSICS.

@export_flags_3d_physics var physics_layers : int
@export_flags_3d_physics var physics_layers_array : Array[int]

@export_flags_3d_render() 🔗

Exporte une propriété d'entier en tant que champ de bit flag pour des couches de rendu 3D. Le widget dans le dock Inspecteur utilisera les noms de couches définis dans ProjectSettings.layer_names/3d_render/layer_1.

Voir aussi @GlobalScope.PROPERTY_HINT_LAYERS_3D_RENDER.

@export_flags_3d_render var render_layers: int
@export_flags_3d_render var render_layers_array: Array[int]

@export_flags_avoidance() 🔗

Exporte une propriété entière en tant que champ d'option (bit) pour les calques de navigation 2D. Le widget dans la barre d'outils de l'Inspecteur utilisera les noms des calques définis dans ProjectSettings.layer_names/2d_navigation/layer_1.

Voir également @GlobalScope.PROPERTY_HINT_LAYERS_AVOIDANCE.

@export_flags_avoidance var avoidance_layers: int
@export_flags_avoidance var avoidance_layers_array: Array[int]

@export_global_dir() 🔗

Exporter une propriété String, Array[String], ou PackedStringArray en tant que chemin absolu vers un dossier. Le chemin peut être sélectionné depuis l'entièreté du système de fichiers. Voir @export_dir pour le limiter au dossier du projet et ses sous-dossiers.

Voir aussi @GlobalScope.PROPERTY_HINT_GLOBAL_DIR.

@export_global_dir var sprite_folder_path: String
@export_global_dir var sprite_folder_paths: Array[String]

@export_global_file(filter: String = "", ...) vararg 🔗

Exporte une propriété String, Array[String], ou PackedStringArray en tant que chemin absolu à un fichier. Le chemin peut être sélectionné depuis l'entièreté du système de fichiers. Voir @export_file afin de le limiter au dossier du projet et ses sous-dossiers.

Si filter est fourni, seul les fichiers correspondant seront disponibles à la sélection.

Voir aussi @GlobalScope.PROPERTY_HINT_GLOBAL_FILE.

@export_global_file var sound_effect_path: String
@export_global_file("*.txt") var notes_path: String
@export_global_file var multiple_paths: Array[String]

@export_group(name: String, prefix: String = "") 🔗

Définit un nouveau groupe pour les propriétés exportées suivantes. Ceci aide à organiser les propriétés dans la barre d'outils de l'Inspecteur. Les groupes peuvent être ajoutés avec un prefix optionnel qui considère uniquement les propriétés ayant ce préfixe dans le groupe. Le groupement se terminera sur la première propriété n'ayant pas de préfixe. Le préfixe est également supprimé du nom de la propriété dans la barre d'outils de l'Inspecteur.

Si aucun prefix n'est fourni, alors toutes les propriétés suivantes seront ajoutées au groupe. Le groupe se termine quand le groupe ou la catégorie suivante sont définis. Vous pouvez également forcer la fin d'un groupe en utilisation cette annotation avec des chaînes de caractères vides comme paramètres : @export_group("", "").

Les groupes ne peuvent pas être imbriqués, utilisez @export_subgroup pour ajouter des sous-groupes au sein d'un groupe.

Voir aussi @GlobalScope.PROPERTY_USAGE_GROUP

@export_group("Propriétés du pilote")
@export var nickname = "Nick"
@export var age = 26

@export_group("Propriétés de la voiture", "car_")
@export var car_label = "Speedy"
@export var car_number = 3

@export_group("", "")
@export var ungrouped_number = 3

@export_multiline(hint: String = "", ...) vararg 🔗

Exporte une propriété String, Array[String], PackedStringArray, Dictionary ou Array[Dictionary] avec un widget TextEdit large à la place d'un LineEdit. Cela ajoute du support pour un contenu multi-ligne et rend plus facile l'édition de beaucoup de texte stocké dans la propriété.

Voir également @GlobalScope.PROPERTY_HINT_MULTILINE_TEXT.

@export_multiline var biographie_personnage
@export_multiline var dialogues_pnj: Array[String]
@export_multiline("monospace", "no_wrap") var art_ascii_favori: String

@export_node_path(type: String = "", ...) vararg 🔗

Exporte une propriété NodePath ou Array[NodePath] avec un filtre pour les types de nœud autorisés.

Voir également @GlobalScope.PROPERTY_HINT_NODE_PATH_VALID_TYPES.

@export_node_path("Button", "TouchScreenButton") var some_button
@export_node_path("Button", "TouchScreenButton") var many_buttons: Array[NodePath]

Note : Le type doit être une classe native ou un script enregistré globalement (utilisant le mot-clé class_name ) qui hérite de Node.


@export_placeholder(placeholder: String) 🔗

Exporte une propriété String avec un emplacement réservé de texte affiché dans le widget d'éditeur widget quand aucune valeur n'est présente.

Voir également @GlobalScope.PROPERTY_HINT_PLACEHOLDER_TEXT.

@export_placeholder("Nom en minuscule") var character_id: String
@export_placeholder("Nom en minuscule") var friend_ids: Array[String]

@export_range(min: float, max: float, step: float = 1.0, extra_hints: String = "", ...) vararg 🔗

Exporte une propriété int, float, Array[int], Array[float], PackedByteArray, PackedInt32Array, PackedInt64Array, PackedFloat32Array, ou PackedFloat64Array en tant que valeur de plage. La plage doit être définie par min et max et, facultativement, par un pas step et une variété d'indices supplémentaires. Le pas step est par défaut 1 pour les entiers. Pour les nombres à virgule flottante, cette valeur dépend de votre paramètre EditorSettings.interface/inspector/default_float_step.

Si les indices "or_greater" et "or_less" sont fournis, le widget de l'éditeur ne plafonnera pas la valeur aux limites de la plage. L'indice "exp" fera en sorte que les valeurs modifiées sur la plage changent de manière exponentielle. L'indice "hide_slider" masquera l'élément slider du widget de l'éditeur.

Des indices permettent également d'indiquer les unités de la valeur modifiée. En utilisant "radians_as_degrees", vous pouvez spécifier que la valeur réelle est en radians, mais doit être affichée en degrés dans le dock Inspecteur (les valeurs de plage sont également en degrés). "degrees" permet d'ajouter un signe de degré comme suffixe d'unité (la valeur est inchangée). Enfin, un suffixe personnalisé peut être fourni en utilisant "suffix :unit", où "unit" peut être n'importe quelle chaîne.

Voir également @GlobalScope.PROPERTY_HINT_RANGE.

@export_range(0, 20) var number
@export_range(-10, 20) var number
@export_range(-10, 20, 0.2) var number : float
@export_range(0, 20) var numbers : Array[float]

@export_range(0, 100, 1, "or_greater") var power_percent
@export_range(0, 100, 1, "or_greater", "or_less") var health_delta

@export_range(-180, 180, 0.001, "radians_as_degrees") var angle_radians
@export_range(0, 360, 1, "degrees") var angle_degrees
@export_range(-8, 8, 2, "suffix :px") var target_offset

@export_storage() 🔗

Exporte une propriété avec l'indicateur @GlobalScope.PROPERTY_USAGE_STORAGE. La propriété n'est pas affichée dans l'éditeur, mais elle est sérialisée et stockée dans la scène ou le fichier de ressources. Cela peut être utile pour les scripts @tool. De plus, la valeur de la propriété est copiée lorsque Resource.duplicate() ou la Node.duplicate() sont appelés, contrairement aux variables non exportées.

var a # Non stocké dans le fichier, non affiché dans l'éditeur.
@export_storage var b # Stocké dans le fichier, non affiché dans l'éditeur.
@export var c: int # Stocké dans le fichier, affiché dans l'éditeur.

@export_subgroup(name: String, prefix: String = "") 🔗

Définit un nouveau sous-groupe pour les propriétés exportées suivantes. Cela permet d'organiser les propriétés dans le dock Inspecteur. Les sous-groupes fonctionnent exactement comme des groupes, sauf qu'ils ont besoin d'un groupe parent pour exister. Voir @export_group.

Voir également @GlobalScope.PROPERTY_USAGE_SUBGROUP.

@export_group("Propriétés du pilote")
@export var nickname = "Nick"
@export var age = 26

@export_subgroup("Propriétés de la voiture", "car_")
@export var car_label = "Speedy"
@export var car_number = 3

Note : Les sous-groupes ne peuvent pas être imbriqués, mais vous pouvez utiliser l'opérateur slash (/) pour obtenir l'effet désiré :

@export_group("Propriétés de la voiture")
@export_subgroup("Roues", "wheel_")
@export_subgroup("Roues/Avant", "front_wheel_")
@export var front_wheel_strength = 10
@export var front_wheel_mobility = 5
@export_subgroup("Roues/Arriere", "rear_wheel_")
@export var rear_wheel_strength = 8
@export var rear_wheel_mobility = 3
@export_subgroup("Roues", "wheel_")
@export var wheel_material: PhysicsMaterial

@export_tool_button(text: String, icon: String = "") 🔗

Exporte une propriété Callable en tant que bouton cliquable avec la légende text. Lorsque le bouton est pressé, l'appelable Callable est appelé.

Si l'icône icon est spécifié, il est utilisée pour récupérer un icône pour le bouton via Control.get_theme_icon(), du type de thème "EditorIcons". Si icon est omis, l'icône par défaut "Callable" est utilisé à la place.

Envisagez d'utiliser le EditorUndoRedoManager pour permettre à l'action d'être annulée en toute sécurité.

Voir aussi @GlobalScope.PROPERTY_HINT_TOOL_BUTTON.

@tool
extends Sprite2D

@export_tool_button("Bonjour") var Bonjour_action = Bonjour
@export_tool_button("Randomiser la couleur !", "ColorRect")
var randomiser_couleur_action = randomiser_couleur

func Bonjour():
print("Bonjour monde !")

func randomiser_couleur():
var undo_redo = EditorInterface.get_editor_undo_redo()
undo_redo.create_action("Randomiser couleur du Sprite2D")
undo_redo.add_do_property(self, "self_modulate" , Color(randf(), randf(), randf())
undo_redo.add_undo_property(self, "self_modulate" , self_modulate)
undo_redo.commit_action()

**Note: ** La propriété est exportée sans le drapeau @GlobalScope.PROPERTY_USAGE_STORAGE parce qu'un Callable ne peut pas être correctement sérialisé et stocké dans un fichier.

Note : Dans un projet exporté, il n'existe ni EditorInterface ni EditorUndoRedoManager, ce qui peut casser certains scripts. Pour éviter cela, vous pouvez utiliser Engine.get_singleton() et omettre le type statique de la déclaration de variable :

var undo_redo = Engine.get_singleton(&"EditorInterface").get_editor_undo_redo()

Note : Évitez de stocker fes callables lambda dans les variables de membres des classes basées sur RefCounted (p. ex. les ressources), car cela peut conduire à des fuites de mémoire. Utilisez uniquement les callables de méthode et optionnellement Callable.bind() ou Callable.unbind().


@icon(icon_path: String) 🔗

Ajoute un icône personnalisé à ce script. L'icône spécifié au icon_path est montré dans le dock de scène pour chaque nœud de cette classe, et dans diverses fenêtres de l'éditeur.

@icon("res ://chemin/vers/classe/icone.svg")

Note : Seul le script peut avoir un icône personnalisé. Les classes internes ne sont pas supportées.

Note : Comme les annotations décrivent leur sujet, l'@icon annotation doit être placée avant la définition de la classe et de son héritage.

Note : Contrairement aux autres annotations, le paramètre de l'annotation @icon doit être un chaîne de caractères littérale (les expressions constantes ne sont pas supportées).


@onready() 🔗

Marque la propriété suivante comme attribuée lorsque la Node est prête. Les valeurs de ces propriétés ne sont pas attribuées immédiatement lorsque le nœud est initialisé (Object._init()), mais sont à la place calculées et stockées juste avant Node._ready().

@onready var nom_personnage= $Label

@rpc(mode: String = "authority", sync: String = "call_remote", transfer_mode: String = "reliable", transfer_channel: int = 0) 🔗

Marque la méthode suivante pour les appels de procédure à distance (RPC). Voir Multijoueur de haut niveau.

Si mode est défini sur "any_peer", permet à n'importe quel pair d'appeler cette fonction RPC. Sinon, seul le pair d'autorité est autorisé à l'appeler et mode doit être conservé comme "authority". Lors de la configuration de fonctions en RPC avec Node.rpc_config(), chacun de ces modes correspond respectivement aux modes RPC MultiplayerAPI.RPC_MODE_AUTHORITY et MultiplayerAPI.RPC_MODE_ANY_PEER. Voir RPCMode. Si un pair qui n'est pas l'autorité tente d'appeler une fonction autorisée uniquement pour l'autorité, la fonction ne sera pas exécutée. Si l'erreur peut être détectée localement (lorsque la configuration RPC est cohérente entre le pair local et le pair distant), un message d'erreur sera affiché sur le pair expéditeur. Sinon, le pair distant détectera l'erreur et affichera une erreur là-bas.

Si sync est défini sur "call_remote", la fonction ne sera exécutée que sur le pair distant, mais pas localement. Pour aussi exécuter cette fonction localement, définissez sync sur "call_local". Lors de la configuration de fonctions en RPC avec Node.rpc_config(), cela équivaut à définir call_local sur true.

Les valeurs acceptées pour transfer_mode sont "unreliable", "unreliable_ordered" ou "reliable". Cela définit le mode de transfert du MultiplayerPeer sous-jacent. Voir MultiplayerPeer.transfer_mode.

Le canal de transfert transfer_channel définit le canal du MultiplayerPeer sous-jacent. Voir MultiplayerPeer.transfer_channel.

L'ordre de mode, sync et transfer_mode n'a pas d'importance, mais les valeurs liées au même argument ne doivent pas être utilisées plus d'une fois. transfer_channel doit toujours être le 4ème argument (vous devez spécifier 3 arguments précédents).

@rpc
func fn() : pass

@rpc("any_peer", "unreliable_ordered")
func fn_update_pos() : pass

@rpc("authority", "call_remote", "unreliable", 0) # Équivalent à @rpc
func fn_default() : pass

Note : Les méthodes annotées avec @rpc ne peuvent pas recevoir d'objets qui définissent des paramètres requis dans Object._init(). Voir Object._init() pour plus de détails.


@static_unload() 🔗

Créez un script avec des variables statiques pour ne pas persister après la perte de toutes les références. Si le script est à nouveau chargé, les variables statiques reviendront à leurs valeurs par défaut.

Remarque : Comme les annotations décrivent leur sujet, l'annotation @static_unload doit être placée avant la définition et l'héritage de la classe.

Attention : Actuellement, en raison d'un bug, les scripts ne sont jamais libérés, même si l'annotation @static_unload est utilisée.


@tool() 🔗

Marque le script actuel comme script outil, lui permettant d'être chargé et exécuté par l'éditeur. Voir Exécution de code dans l'éditeur.

@tool
extends Node

Remarque : Comme les annotations décrivent leur sujet, l'annotation @tool doit être placée avant la définition et l'héritage de la classe.


@warning_ignore(warning: String, ...) vararg 🔗

Marque l'instruction suivante pour ignorer le warning spécifié. Voir le système d’avertissement GDScript.

func test():
    print("hello")
    return
    @warning_ignore("unreachable_code")
    print("unreachable")

Voir aussi @warning_ignore_start et @warning_ignore_restore.


@warning_ignore_restore(warning: String, ...) vararg 🔗

Arrête d'ignorer les types d'avertissement énumérés après @warning_ignore_start. L'ignorance des types d'avertissement spécifiés sera réinitialisée aux paramètres de projet. Cette annotation peut être omise pour ignorer les types d'avertissement jusqu'à la fin du fichier.

Note : Contrairement à la plupart des autres annotations, les arguments de l'annotation @warning_ignore_restore doivent être des littéraux de chaîne (les expressions constantes ne sont pas supportées).


@warning_ignore_start(warning: String, ...) vararg 🔗

Commence à ignorer les types d'avertissement listés jusqu'à la fin du fichier ou l'annotation @warning_ignore_restore avec le type d'avertissement donné.

func test():
var a = 1 # Avertissement (si activé dans les paramètres du projet).
@warning_ignore_start("unused_variable")
var b = 2 # Aucun avertissement.
c = 3 # Aucun avertissement.
@warning_ignore_restore("unused_variable")
var d = 4 # Avertissement (si activé dans les paramètres du projet).

Note : Pour supprimer un seul avertissement, utilisez plutôt @warning_ignore.

Note : Contrairement à la plupart des autres annotations, les arguments de l'annotation @warning_ignore_start doivent être des littéraux de chaîne (les expressions constantes ne sont pas supportées).


Descriptions des méthodes

Color Color8(r8: int, g8: int, b8: int, a8: int = 255) 🔗

Obsolète : Use Color.from_rgba8() instead.

Renvoie une Color construite à partir des niveaux de rouge (r8), de vert (g8), de bleu (b8) et éventuellement de transparence (ou alpha : a8). Chaque niveau est représenté par un entier qui sera divisé par 255.0 pour obtenir la valeur de l'attribut associé. Utiliser Color8() à la place du constructeur Color standard est utile lorsque vous devez faire correspondre des valeurs de couleur exactes dans une Image.

var red = Color8(255, 0, 0)             # Même effet que Color(1, 0, 0).
var dark_blue = Color8(0, 0, 51)        # Même effet que Color(0, 0, 0.2).
var my_color = Color8(306, 255, 0, 102) # Même effet que Color(1.2, 1, 0, 0.4).

Note : En raison de la précision inférieure de Color8() par rapport au constructeur Color standard, une couleur créée avec la Color8() ne sera généralement pas égale à la même couleur créée avec le constructeur Color standard. Utilisez Color.is_equal_approx() pour les comparaisons afin d'éviter les problèmes d'erreur de précision en virgule flottante.


void assert(condition: bool, message: String = "") 🔗

Asserts that the condition is true. If the condition is false, an error is generated and the current method returns a default value. When running from the editor, failed asserts also cause a debugger break. This can be used as a stronger form of @GlobalScope.push_error() for reporting errors to project developers or add-on users.

An optional message can be shown in addition to the generic "Assertion failed" message. You can use this to provide additional details about why the assertion failed.

Warning: For performance reasons, the code inside assert() is only executed in debug builds or when running the project from the editor. Don't include code that has side effects in an assert() call. Otherwise, the project will behave differently when exported in release mode.

# Imagine we always want speed to be between 0 and 20.
var speed = -10
assert(speed < 20) # True, the program will continue.
assert(speed >= 0) # False, the program will stop.
assert(speed >= 0 and speed < 20) # You can also combine the two conditional statements in one check.
assert(speed < 20, "the speed limit is 20") # Show a message.

Note: assert() is a keyword, not a function. So you cannot access it as a Callable or use it inside expressions.


String char(code: int) 🔗

Renvoie un caractère unique (en tant que String de longueur 1) du point de code Unicode code donné.

print(char(65))     # Affiche "A"
print(char(129302)) # Affiche "🤖" (emoji tête de robot)

C'est l'inverse de ord(). Voir aussi String.chr() et String.unicode_at().


Variant convert(what: Variant, type: Variant.Type) 🔗

Obsolète : Use @GlobalScope.type_convert() instead.

Convertit what en le type type de la meilleure manière possible. Le type utilise les valeurs de Variant.Type.

var a = [4, 2.5, 1.2]
print(a is Array) # Affiche true

var b = convert(a, TYPE_PACKED_BYTE_ARRAY)
print(b)          # Affiche [4, 2, 1]
print(b is Array) # Affiche false

Object dict_to_inst(dictionary: Dictionary) 🔗

Obsolète : Consider using JSON.to_native() or Object.get_property_list() instead.

Convertit un dictionary (créé précédemment avec inst_to_dict()) à nouveau en une instance d'Objet. Utile pour la dé-sérialisation.


Array get_stack() 🔗

Renvoie un tableau de dictionnaires représentant la pile d'appels courante.

func _ready():
    foo()

func foo():
    bar()

func bar():
    print(get_stack())

En partant de _ready(), bar() afficherait :

[{function:bar, line:12, source:res://script.gd}, {function:foo, line:9, source:res://script.gd}, {function:_ready, line:6, source:res://script.gd}]

Voir aussi print_debug(), print_stack(), et Engine.capture_script_backtraces().

Note : Par défaut, les traces d'appel ne sont disponibles que dans les builds d'éditeur et débogage. Pour les activer dans les builds de release aussi, vous devez activer ProjectSettings.debug/settings/gdscript/always_track_call_stacks.


Dictionary inst_to_dict(instance: Object) 🔗

Obsolète : Consider using JSON.from_native() or Object.get_property_list() instead.

Renvoie l'instance donnée convertie en un Dictionary. Peut s'avérer utile pour la sérialisation.

var foo = "bar"
func _ready():
    var d = inst_to_dict(self)
    print(d.keys())
    print(d.values())

Affiche :

[@subpath, @path, foo]
[, res://test.gd, bar]

Remarque : Cette fonction ne peut être utilisée que pour sérialiser des objets ayant un GDScript associé stocké dans un fichier séparé. Les objets sans script associé, avec un script écrit dans un autre langage, ou encore avec un script intégré ne sont pas supportés.

Remarque : Cette fonction n'est pas récursive. Ce qui veut dire que les objets imbriqués ne seront pas représentés sous forme de dictionnaire. Aussi, les propriétés passées par référence (Object, Dictionary, Array, et tableaux compactés) seront copiées par référence, et pas dupliquées.


bool is_instance_of(value: Variant, type: Variant) 🔗

Returns true if value is an instance of type. The type value must be one of the following:

Unlike the right operand of the is operator, type can be a non-constant value. The is operator supports more features (such as typed arrays and dictionaries). Use the operator instead of this method if you do not need to check the type dynamically.

Examples:

print(is_instance_of(a, TYPE_INT))
print(is_instance_of(a, Node))
print(is_instance_of(a, MyClass))
print(is_instance_of(a, MyClass.InnerClass))

Note: If value and/or type are freed objects (see @GlobalScope.is_instance_valid()), or type is not one of the above options, this method will raise a runtime error.

See also @GlobalScope.typeof(), Object.is_class(), Object.get_script(), Array.is_same_typed() (and other Array methods), Dictionary.is_same_typed() (and other Dictionary methods).


int len(var: Variant) 🔗

Renvoie la longueur du Variant var. La longueur peut être le nombre de caractères d'une String, le nombre d'éléments de n'importe quel type de tableau ou la taille de Dictionary. Pour tout autre type de Variant, une erreur d’exécution est générée et l’exécution est interrompue.

a = [1, 2, 3, 4]
len(a) # Renvoie 4

b = "Hello!"
len(b) # Renvoie 6

Resource load(path: String) 🔗

Renvoie une Resource depuis le système de fichiers localisé au chemin absolu path. Sauf si cela est déjà référencé autre part (comme dans un autre script ou dans la scène), la ressource est chargée depuis le disque sur un appel de fonction, qui peut causer un petit délai, en particulier pendant le chargement de larges scènes. Pour éviter des délais inutiles lorsque vous chargez quelque chose plusieurs fois, vous pouvez stocker la ressource dans une variable ou utiliser preload(). Cette méthode est équivalent à utiliser ResourceLoader.load() avec ResourceLoader.CACHE_MODE_REUSE.

Note : Les chemins des ressources peuvent être obtenus en faisant un clic droit sur une ressource dans la barre d'outils du système de fichiers et en choisissant "Copier le chemin", ou en déplaçant le fichier du système de fichiers vers le script actuel.

# Charge une scène appelée "main" située dans la racine du répertoire du projet et la stocke dans une variable.
var main = load("res://main.tscn") # main contiendra une ressource PackedScene.

Important : Les chemins relatifs ne sont pas par rapport au script appelant cette méthode, à la place il est préfixé avec "res://". Le chargement depuis des chemins relatifs pourrait ne pas fonctionner comme prévu.

Cette fonction est une version simplifiée de ResourceLoader.load(), qui peut être utilisée pour des scénarios plus avancés.

Note : Les fichiers doivent être importés dans le moteur de jeu en premier pour qu'ils soient chargés en utilisant cette fonction. Si vous voulez importer des Images durant l'exécution, vous pouvez utiliser Image.load(). Si vous voulez importer des fichiers audios, vous pouvez utiliser l'extrait décrit dans AudioStreamMP3.data.

Note : Si ProjectSettings.editor/export/convert_text_resources_to_binary vaut true, load() ne pourra pas lire les fichiers convertis dans un projet exporté. Si vous comptez sur le chargement au moment de l'exécution des fichiers présents dans le PCK, définissez ProjectSettings.editor/export/convert_text_resources_to_binary sur false.


int ord(char: String) 🔗

Renvoie un entier représentant le point de code Unicode du caractère char donné, qui devrait être une chaîne de longueur 1.

print(ord("A")) # Affiche 65
print(ord("🤖")) # Affiche 129302

C'est l'inverse de char(). Voir aussi String.chr() et String.unicode_at().


Resource preload(path: String) 🔗

Renvoie la Resource localisée à path dans le système de fichiers. Pendant le run-time, la ressource est chargée lors de la lecture initiale du script. Cette fonction agit efficacement comme une référence à cette ressource. Notez que cette méthode nécessite que path soit un String constant. Si vous voulez charger une ressource depuis un chemin variable/dynamique, utilisez load().

Note : Les chemins des ressources peuvent être obtenus en cliquant avec le bouton droit sur la ressource dans la fenêtre des Assets puis en choisissant "Copier le chemin", ou en faisant glisser le fichier depuis la fenêtre "Système de fichiers" vers le script courant.

# Créer une instance d'une scène.
var diamond = preload("res://diamond.tscn").instantiate()

Note : preload() est un mot-clé, pas une fonction. Vous ne pouvez donc pas y accéder en tant que Callable.


void print_debug(...) vararg 🔗

Comme @GlobalScope.print(), mais inclut l'image de la pile actuelle lors de l'exécution avec le débogueur actif.

La sortie dans la console ressemblerait à ceci :

Test print
At: res://test.gd:15:_process()

Voir aussi print_stack(), get_stack(), et Engine.capture_script_backtraces().

Note : Par défaut, les traces d'appel ne sont disponibles que dans les builds d'éditeur et débogage. Pour les activer dans les builds de release aussi, vous devez activer ProjectSettings.debug/settings/gdscript/always_track_call_stacks.


void print_stack() 🔗

Affiche une trace de pile à l'emplacement actuel du code.

La sortie dans la console peut ressembler à ce qui suit :

Frame 0 - res://test.gd:16 in function '_process'

Voir aussi print_debug(), print_stack(), et Engine.capture_script_backtraces().

Note : Par défaut, les traces d'appel ne sont disponibles que dans les builds d'éditeur et débogage. Pour les activer dans les builds de release aussi, vous devez activer ProjectSettings.debug/settings/gdscript/always_track_call_stacks.


Array range(...) vararg 🔗

Renvoie un tableau avec l'intervalle donné. range() peut être appelée de trois façons :

range(n : int) : Commence à 0, augmente par pas de 1, et s'arrête avant n. L'argument n est exclusif.

range(b : int, n : int) : Commence à b, augmente par pas de 1, et s'arrête avant n. Les arguments b et n sont inclusifs et exclusifs, respectivement.

range(b : int, n : int, s : int) : Commence à b, augmente/diminue par pas de s, et s'arrête avant n. Les arguments b et n sont inclusifs, et exclusifs, respectivement. L'argument s peut être négatif, mais pas 0. Si s est 0, un message d'erreur est affiché.

range() convertit tous les arguments en int avant le traitement.

Note : Renvoie un tableau vide si aucune valeur ne respecte les contraintes (par ex. range(2, 5, -1) ou range(5, 5, 1)).

Exemples :

print(range(4))             # Affiche [0, 1, 2, 3]
print(range(2, 5))        # Affiche [2, 3, 4]
print(range(0, 6, 2))   # Affiche [0, 2, 4]
print(range(4, 1, -1)) # Affiche [4, 3, 2]

Pour parcourir un Array à l'envers, utilisez :

var array = [3, 6, 9]
for i in range(array.size() - 1, -1, -1):
    print(array[i])

Sortie :

9
6
3

Pour itérer sur un float, convertissez les dans la boucle.

for i in range (3, 0, -1):
    print(i / 10.0)

Sortie :

0.3
0.2
0.1

bool type_exists(type: StringName) 🔗

Obsolète : Use ClassDB.class_exists() instead.

Renvoie true si la classe dérivée Object donnée existe dans ClassDB. Notez que les types de données Variant ne sont pas enregistrés dans ClassDB.

type_exists("Sprite2D") # Renvoie true
type_exists("ClasseNonExistante") # Renvoie false