Las siguientes secciones muestran cómo añadir un widget a la interfaz de usuario de un jugador y cómo eliminarlo.
Estos ejemplos utilizan un widget de bloque de texto, pero puedes utilizar cualquier tipo de widget. Consulta Tipos de widgets para ver todos los tipos de widgets que puedes utilizar.
Cómo añadir un widget
Este ejemplo muestra cómo añadir un widget cuando un jugador interactúa con un dispositivo Botón en el nivel:
Crea un nuevo dispositivo de Verse y añádelo al nivel. Para aprender a crear un dispositivo nuevo en Verse, consulta Cómo crear tu propio dispositivo con Verse.
Abre tu archivo de Verse en Visual Studio Code con el explorador de Verse.
Añade una propiedad editable de dispositivo Botón a tu dispositivo de Verse y establece la referencia al dispositivo Botón en el nivel. Para saber cómo crear propiedades editables, consulta Cómo personalizar las propiedades del dispositivo.
# Establece el dispositivo Botón en el editor para referenciar dicho dispositivo en el nivel. @editable MyButton : button_device = button_device{}En la parte superior de tu archivo de Verse, añade estas líneas para usar la API de IU de Verse:
using { /UnrealEngine.com/Temporary/UI } using { /Fortnite.com/UI } using { /UnrealEngine.com/Temporary/SpatialMath}Esta IU es solo por jugador, por lo que necesitarás una referencia a un jugador para acceder a su IU. Este ejemplo muestra cómo mostrar una IU personalizada cuando el jugador interactúa con un botón, ya que los eventos para dispositivos incluyen una referencia al jugador que interactuó con el dispositivo. Para saber cómo configurar suscripciones a eventos, consulta Codificación de interacciones de dispositivos.
# Se ejecuta cuando se inicia el dispositivo en un juego en ejecución. OnBegin<override>()<suspends> : void = MyButton.InteractedWithEvent.Subscribe(HandleButtonInteraction) # Una IU personalizada solo puede asociarse a un jugador concreto y solo ese jugador puede verla HandleButtonInteraction(Agent : agent) : void = # Se muestra la IUAhora puedes llamar a la función falible
GetPlayerUI[]en una expresión if para obtener una referencia de la IU del jugador.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 UICon la referencia a la IU del jugador, puedes llamar a
AddWidget()para añadir tu widget.Crea un mensaje llamado TextForMyUI con el especificador
localizese inicialízalo con la cadena"¡Hola, mundo!".hello_world_device:= class(creative_device): # Establece el dispositivo Botón en el editor para referenciar dicho dispositivo en el nivel. @editable MyButton : button_device = button_device{} # Un mensaje localizable para mostrar como texto en la interfaz de usuario TextForMyUI<localizes> : message = "¡Hola, mundo!"
El tipo
messagesignifica que el texto se puede localizar, y la cadena que utilices para inicializar una variablemessagees el texto y el idioma predeterminado para el mensaje. Para obtener más información sobre el tipomessage, consulta la Referencia rápida del lenguaje Verse.A continuación, crea un widget de texto con
TextForMyUIcomo texto predeterminado y añádelo a la IU del jugador.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)
A continuación puedes ver el código completo:
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 @editableGuarda tu archivo de Verse y elige Verse > Crear secuencias de comandos de Verse en el menú principal de UEFN para actualizar tu dispositivo Verse.
Cuando pruebes tu nivel con este dispositivo de Verse, aparecerá el texto "¡Hola, mundo!" en la esquina superior izquierda de la pantalla cuando el jugador interactúe con el dispositivo Botón por primera vez.
Cómo eliminar un widget
Este ejemplo muestra cómo eliminar la IU de la pantalla del jugador cuando vuelve a interactuar con el dispositivo Botón:
Abre el archivo de Verse que creaste en Cómo añadir un widget.
Para poder eliminar el widget más tarde, cuando el jugador vuelva a interactuar con el botón, tendrás que almacenar el widget en una variable para poder hacer referencia a ella más adelante. Como los widgets solo se muestran por jugador, tendrás que almacenar el widget y asociarlo al jugador al que se muestra para poder escoger el widget adecuado para el jugador adecuado.
Crea una variable map nombrada
MaybeMyUIPerPlayerque useplayercomo clave y un bloque de texto optional como valor del widget en el mapa. (ten en cuenta que este ejemplo utiliza un widget de bloque de texto, pero puedes utilizar cualquier tipo de widget).var MaybeMyUIPerPlayer: [player]?text_block = map{}Cuando añadas el widget a la IU del jugador, almacénalo en la variable
MaybeMyUIPerPlayerpara poder eliminarlo más tarde de la pantalla. Como acceder a un elemento de una asignación es una expresión falible, establecer el valor del widget en relación con el jugador al que debe llamarse en un contexto de fallo, por ejemplo, una expresiónif.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}) {}Ahora actualiza la función para comprobar si el jugador ya tiene un widget mostrado para él en
MaybeMyUIPerPlayer. Si es así, elimina el widget. De lo contrario, crea un nuevo widget para que lo vean.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}A continuación puedes ver el código completo:
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 @editableGuarda tu archivo de Verse y elige Verse > Crear secuencias de comandos de Verse en el menú principal de UEFN para actualizar tu dispositivo Verse.
Cuando pruebes tu nivel con este dispositivo de Verse, aparecerá el texto "¡Hola, mundo!" en la esquina superior izquierda de la pantalla cuando el jugador interactúe con el dispositivo Botón por primera vez. Al volver a interactuar con él, el texto desaparece.