Moteur de jeu Godot/Tutoriel/SetEtGet
Lire et écrire dans une interface graphique avec set et get (peut contenir erreurs et imprécisions)
modifierChanger le texte d'un "Label"
modifierVous avez crée un Label dans une Scène et vous auriez 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 pensez a convertir).
var MaVariable=""
Utilisez ou créez les fonctions qui permettraient d'obtenir ce que vous souhaitez 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 le Label 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
modifierOn aimeriez 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:
modifierVoila 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?
modifierLes 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.