21. Créer une interface utilisateur (UI) pour afficher votre score
Dans cet épisode, nous quittons la console de débogage pour offrir à nos joueurs une interface visuelle propre. Nous allons apprendre à créer un Widget Blueprint pour afficher le score en temps réel à l’écran, une étape essentielle pour transformer votre prototype en un véritable jeu.
Résumé de la mise en place
- Création du Widget : Utilisation du menu User Interface > Widget Blueprint (nommé
WD_Scorepar convention). - Configuration visuelle : Ajout d’un élément Text dans le designer, avec un réglage précis des ancres (Anchors) pour garantir la compatibilité avec toutes les résolutions d’écran.
- Binding de données : Création d’une fonction de liaison (Binding) pour mettre à jour dynamiquement le texte en fonction de la variable
Pointsstockée dans le personnage. - Manipulation de chaînes : Utilisation du node
Build String (Int)pour concaténer le label “Score : " avec la valeur numérique de notre variable. - Affichage à l’écran : Utilisation de l’événement
Event Begin Playdans le Character Blueprint pour instancier le widget viaCreate Widgetet l’ajouter au viewport avecAdd to Viewport. - Nettoyage : Suppression des anciens
Print Stringdans le Character pour une interface épurée.
Ce qui reste d’actualité aujourd’hui
Bien que les versions d’Unreal Engine aient évolué (UE5), les principes fondamentaux de l’UI restent identiques :
- Le système UMG (Unreal Motion Graphics) : Le workflow de création de widgets via le designer et les bindings est toujours la méthode standard pour les interfaces simples.
- Les Ancres : La gestion des ancres est cruciale dans n’importe quelle version d’Unreal pour éviter que les éléments d’interface ne se décalent sur des écrans ultra-wide ou des résolutions mobiles.
- Le Binding vs Event-Driven : Si le Binding est simple à mettre en place, gardez à l’esprit que pour des projets plus complexes, il est préférable d’utiliser des Events (Dispatcher) pour mettre à jour l’UI uniquement quand le score change, plutôt que de recalculer la valeur à chaque frame (ce qui est le comportement par défaut du binding).
- Modularité : La séparation entre la logique (Character) et la vue (Widget) reste une bonne pratique de programmation pour maintenir un code propre et évolutif.
© 2026 - Créé avec ❤️ sous Hugo & Relearn.