Moteur de jeu Godot/Tutoriel/SetEtGet

Lire et écrire dans une interface graphique avec set et get (peu contenir des erreurs et imprécisions) modifier

Changer le texte d'un "Label" modifier

Dans une scène vous avez créé un Label mais vous aurais aimé qu'il indique l'heure ou le nombre de vies d'un joueur ou n'importe quoi d'autre?

Créez un script et faites en sorte que MaVariable reçoive une chaine de caractère (dans d'autres cas pansez a convertir).

var MaVariable=""

Utilisez ou créez les fonctions qui permettraient d'obtenir ce que vous souhaiteriez dans la console avec la simple ligne dans la fonction _ready (par exemple):

print(MaVariable)

Si tout fonctionne mettez cette simple ligne de code dans la bonne fonction pour que l'affichage se fasse et change quand vous le souhaitez

$"../Label".set_text(MaVariable)

Remplacez "../Label" par le chemin de votre nœud.

Récupérer le texte d'un champ de texte modifier

On aimerais parfois avoir un champ de texte pour demander le nom d'un personnage de RPG, du joueur ou du futur fichier' de sauvegarde. L'idéal étant de pouvoir l'intégré dans une variable pour en faire ce qu'on veut ensuite.

Dans une scène il suffit (normalement) d'ajouter un noeud "TextEdit" et d'associer un script avec dans une fonction:

MaVariable=$"../TextEdit".get_text()

Remplacez "../TextEdit" par le chemin de votre noeud.

La variable est probablement locale donc elle ne marchera pas partout et pas au moment voulut. Lisez la documentation sur les variable et celle sur les fonctions pour mieux adapter le code.

Vous pouvez toujours tester n'importe ou en mettant un:

print(MaVariable)

pour voir si ça marche.

Un exemple de script: modifier

Voila ce que contiens mon fichier "Set_Get.tscn".

[gd_scene load_steps=2 format=3 uid="uid://b1bk6yx0w6o0"]

[sub_resource type="GDScript" id="GDScript_nix62"]
script/source = "extends Button
#Je définis ma variable
var texte=\"Texte de démarrage\"

#Quand j'appuis sur le bouton
func _on_pressed():
		#Ce que l'utilisateur a tapé se retrouve dans la variable
		texte=$\"../TextEdit\".get_text()
		#Pour s'assurer que tout fonctionne on affiche le contenue de la variable dans la console
		print(texte)
		#Et on l'affiche également dans le Label.
		$\"../Label\".set_text(texte)
"

[node name="Control" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2

[node name="GridContainer" type="GridContainer" parent="."]
layout_mode = 0
offset_right = 700.0
offset_bottom = 350.0

[node name="Label" type="Label" parent="GridContainer"]
layout_mode = 2
text = "Simple test	(Sera remplacé par le texte que vous écrirez une fois le bouton OK appuyé)"

[node name="TextEdit" type="TextEdit" parent="GridContainer"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
placeholder_text = "Essayez de taper un court texte."
wrap_mode = 1
caret_type = 1

[node name="Button" type="Button" parent="GridContainer"]
layout_mode = 2
text = "OK (Remplacer le texte en haut)"
script = SubResource("GDScript_nix62")

[connection signal="pressed" from="GridContainer/Button" to="GridContainer/Button" method="_on_pressed"]

Comme vous le voyez le gdscript est inclus dedans pour faciliter le partage.

Et ensuite? modifier

Les débutants peuvent essayer de créer une fenêtre qui demande un nom et une fois validé un message qui dirait bonjour a la personne..

Un pro peu afficher les résultats d'un lancer de dés, la date et heure du système, Un quizz ou carrément une histoire dont vous êtes le héros avec des boutons.

Dans l'ensemble: des chiffres a la place des barres de vie, le niveau du joueur ou son score en temps réel.