Dans les sections suivantes, nous vous expliquons comment ajouter un widget à l'interface utilisateur d'un joueur et comment le supprimer.
Dans ces exemples, nous utilisons un widget de bloc de texte, mais vous pouvez utiliser n'importe quel type de widget. Consultez la rubrique Types de widgets pour connaître tous les types de widgets que vous pouvez utiliser.
Ajouter un widget
Cet exemple montre comment ajouter un widget lorsqu'un joueur interagit avec un appareil Button dans le niveau :
Créez un nouvel appareil Verse et ajoutez-le au niveau. Pour apprendre à créer un nouvel appareil dans Verse, consultez la rubrique Créer votre propre appareil à l'aide de Verse.
Ouvrez votre fichier Verse dans Visual Studio Code avec l'explorateur Verse.
Ajoutez une propriété de bouton modifiable à votre appareil Verse et configurez la référence au bouton dans votre niveau. Pour apprendre à créer des propriétés modifiables, consultez la page Personnaliser les propriétés des appareils.
# Configurer l'appareil Bouton dans l'éditeur pour référencer l'appareil dans le niveau @editable MyButton : button_device = button_device{}Dans la partie supérieure de votre fichier Verse, ajoutez les lignes suivantes pour utiliser l'API d'IU Verse :
using { /UnrealEngine.com/Temporary/UI } using { /Fortnite.com/UI } using { /UnrealEngine.com/Temporary/SpatialMath}Cette IU n'étant disponible que pour un joueur, vous aurez besoin d'une référence à un joueur pour accéder à son IU. Dans cet exemple, nous vous expliquons comment afficher une IU personnalisée lorsque le joueur interagit avec un bouton, car les événements pour les appareils incluent une référence au joueur qui a interagi avec l'appareil. Pour apprendre à configurer les abonnements aux événements, consultez la rubrique Coder des interactions avec les appareils.
# Exécuter à l'activation de l'appareil dans un jeu en cours OnBegin<override>()<suspends> : void = MyButton.InteractedWithEvent.Subscribe(HandleButtonInteraction) # Une IU personnalisée ne peut être associée qu'à un seul joueur, et seul ce joueur peut la voir HandleButtonInteraction(Agent : agent) : void = # Afficher l'IUVous pouvez maintenant appeler la fonction faillible
GetPlayerUI[]dans une expression if pour obtenir une référence à l'interface du joueur.Verse# A custom UI can only be associated with a specific player, and only that player can see it HandleButtonInteraction(Agent : agent) : void = # Agents can be a player or AI, but you can only get the UI of a player # so you must cast the Agent, who interacted with the Button device, to the player type if (InPlayer := player[Agent], PlayerUI := GetPlayerUI[InPlayer]): # Display UIAvec la référence à l’interface du joueur, vous pouvez appeler
AddWidget()pour ajouter votre widget.Créez un message intitulé TextForMyUI doté du spécificateur
localizeset initialisez-le avec la chaîne"Bonjour le monde !".hello_world_device := class(creative_device): # Configurer l'appareil Bouton dans l'éditeur pour référencer l'appareil dans le niveau @editable MyButton : button_device = button_device{} # Message localisable à afficher comme texte dans l'IU TextForMyUI<localizes> : message = "Hello, world!"
Le type
messagesignifie que le texte peut être localisé et que la chaîne que vous utilisez pour initialiser une variablemessageest le texte et la langue par défaut du message. Pour en savoir plus sur le type demessage, consultez la page Guide de référence rapide du langage Verse.Créez ensuite un widget de texte avec
TextForMyUIcomme texte par défaut et ajoutez-le à l’interface du joueur.Verse# A custom UI can only be associated with a specific player, and only that player can see it HandleButtonInteraction(Agent : agent) : void = # Agents can be a player or AI, but you can only get the UI of a player # so you must cast the Agent, who interacted with the Button device, to the player type if (InPlayer := player[Agent], PlayerUI := GetPlayerUI[InPlayer]): MyUI : text_block = text_block{DefaultText := TextFOrMyUI} PlayerUI.AddWidget(MyUI)
Voici le code complet :
Verseusing { /Fortnite.com/Devices } using { /Verse.org/Simulation } using { /UnrealEngine.com/Temporary/UI } using { /Fortnite.com/UI } using { /UnrealEngine.com/Temporary/SpatialMath} hello_world_device := class(creative_device): # Set the Button device in the Editor to reference the device in the level @editableEnregistrez votre fichier Verse et choisissez Verse > Créer le code Verse dans le menu principal de l’UEFN pour mettre à jour votre appareil Verse.
Lorsque vous testez votre niveau avec cet appareil Verse, le texte "Hello, world!" apparaît dans le coin supérieur gauche de l'écran dès que le joueur interagit avec l'appareil Bouton.
Supprimer un widget
Dans cet exemple, nous vous expliquons comment supprimer l'interface utilisateur de l'écran du joueur lorsque ce dernier interagit à nouveau avec l'appareil Bouton :
Ouvrez le fichier Verse que vous avez créé à la rubrique Ajouter un widget.
Pour pouvoir supprimer le widget par la suite lorsque le joueur interagit à nouveau avec le bouton, vous devez enregistrer le widget dans une variable afin de pouvoir y faire référence ultérieurement. Étant donné que les widgets ne s'affichent que pour un joueur, vous devrez enregistrer le widget et l'associer au joueur correspondant, afin de pouvoir sélectionner le bon widget pour le bon joueur.
Créez une variable de mappage
nommée MaybeMyUIPerPlayerqui utilise lejoueurcomme clé et un bloc de texte facultatif comme valeur de widget dans le mappage. Remarque : dans cet exemple, nous utilisons un widget de bloc de texte, mais vous pouvez utiliser n'importe quel type de widget.var MaybeMyUIPerPlayer : [player]?text_block = map{}Lorsque vous ajoutez le widget à l'interface du joueur, stockez votre widget dans la variable
MaybeMyUIPerPlayerafin de pouvoir le supprimer ultérieurement de l'écran. Étant donné que l'accès à un élément de mappage est une expression faillible, la définition de la valeur du widget par rapport au joueur doit être appelée dans un contexte d'échec, comme une expressionif.Verse# A custom UI can only be associated with a specific player, and only that player can see it HandleButtonInteraction(Agent : agent) : void = # Agents can be a player or AI, but you can only get the UI of a player # so you must cast the Agent, who interacted with the Button device, to the player type if (InPlayer := player[Agent], PlayerUI := GetPlayerUI[InPlayer]): NewUI := text_block{DefaultText := TextForMyUI} PlayerUI.AddWidget(NewUI) if (set MaybeMyUIPerPlayer[InPlayer] = option{NewUI}) {}Mettez à jour la fonction pour vérifier s'il existe un widget affiché pour le joueur dans
MaybeMyUIPerPlayer. Si c'est le cas, supprimez le widget. Si ce n'est pas le cas, créez un nouveau widget qui lui sera affiché.Verse# A custom UI can only be associated with a specific player, and only that player can see it HandleButtonInteraction(Agent : agent) : void = # Agents can be a player or AI, but you can only get the UI of a player # so you must cast the Agent, who interacted with the Button device, to the player type if (InPlayer := player[Agent], PlayerUI := GetPlayerUI[InPlayer]): if (MyUI := MaybeMyUIPerPlayer[InPlayer]?): PlayerUI.RemoveWidget(MyUI) if (set MaybeMyUIPerPlayer[InPlayer] = false) {} else: NewUI := text_block{DefaultText := TextForMyUI}Voici le code complet :
Verseusing { /Fortnite.com/Devices } using { /Verse.org/Simulation } using { /UnrealEngine.com/Temporary/UI } using { /Fortnite.com/UI } using { /UnrealEngine.com/Temporary/SpatialMath} hello_world_device := class(creative_device): # Set the Button device in the Editor to reference the device in the level @editableEnregistrez votre fichier Verse et choisissez Verse > Créer le code Verse dans le menu principal de l'UEFN pour mettre à jour votre appareil Verse.
Lorsque vous testez votre niveau avec cet appareil Verse, le texte "Hello, world!" apparaît dans le coin supérieur gauche de l'écran la première fois que le joueur interagit avec le bouton. Le texte disparaît lorsque le joueur interagit à nouveau avec l'appareil Bouton.