Z poniższych sekcji dowiesz się, jak dodać widżet do UI gracza i jak go z niego usunąć.
W tych przykładach użyto widżetu bloku tekstowego, ale możesz użyć dowolnego widżetu. Aby zapoznać się ze wszystkimi typami widżetów, których możesz użyć, patrz: Typy widżetów.
Dodawanie widżetu
Ten przykład pokazuje, jak dodać widżet, gdy gracz wchodzi w interakcję z urządzeniem przycisku na poziomie:
Utwórz nowe urządzenie Verse i dodaj je do poziomu. Aby dowiedzieć się, jak utworzyć nowe urządzenie w Verse, patrz: Tworzenie własnego urządzenia przy użyciu Verse.
W Visual Studio Code otwórz plik Verse za pomocą Eksploratora Verse.
Dodaj edytowalną właściwość urządzenia przycisku do urządzenia Verse i skonfiguruj odwołanie do urządzenia przycisku w swoim poziomie. Aby dowiedzieć się, jak tworzyć edytowalne właściwości, patrz: Dostosowywanie właściwości urządzeń.
# Ustaw urządzenie przycisku w edytorze tak, aby odwoływało się do urządzenia na poziomie @editable MyButton : button_device = button_device{}Na początku pliku Verse dodaj następujące wiersze, aby korzystać z interfejsu API UI Verse:
using { /UnrealEngine.com/Temporary/UI } using { /Fortnite.com/UI } using { /UnrealEngine.com/Temporary/SpatialMath}Ten UI jest dostępny tylko dla danego gracza, dlatego będziesz potrzebować odwołania do gracza, aby uzyskać dostęp do jego UI. W tym przykładzie pokazano, jak wyświetlić niestandardowy UI, gdy gracz wchodzi w interakcję z przyciskiem, ponieważ zdarzenia dla urządzeń zawierają odwołanie do gracza, który wszedł w interakcję z urządzeniem. Aby dowiedzieć się, jak skonfigurować subskrypcje zdarzeń, patrz: Kodowanie interakcji z urządzeniem.
# Działa po uruchomieniu urządzenia w aktywnej grze OnBegin<override>()<suspends> : void = MyButton.InteractedWithEvent.Subscribe(HandleButtonInteraction) # Niestandardowy UI można powiązać tylko z konkretnym graczem i tylko ten gracz może go zobaczyć HandleButtonInteraction(Agent : agent) : void = # Wyświetlanie UITeraz możesz wywołać funkcję zawodną
GetPlayerUI[]w wyrażeniu if, aby uzyskać odwołanie do UI gracza.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 UIGdy masz odwołanie do UI gracza, możesz wywołać
AddWidget(), aby dodać swój widżet.Utwórz komunikat o nazwie TextForMyUI, który ma specyfikator
localizes, i zainicjuj go z użyciem ciągu tekstowego"Witaj, świecie!".hello_world_device := class(creative_device): # Ustaw urządzenie przycisku w edytorze tak, aby odwoływało się do urządzenia w poziomie @editable MyButton : button_device = button_device{} # Wiadomość z możliwością lokalizacji do wyświetlenia jako tekst w UI TextForMyUI<localizes> : message = "Witaj, świecie!"
Typ
message(komunikat) oznacza, że tekst można zlokalizować, a ciąg tekstowy (string) użyty do zainicjowania zmiennejmessagejest domyślnym tekstem i językiem komunikatu. Aby dowiedzieć się więcej na temat typukomunikatu, patrz: Skrócony przewodnik po języku Verse.Następnie utwórz widżet tekstowy z
TextForMyUIjako tekstem domyślnym i dodaj go do UI gracza.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)
Poniżej znajduje się kompletny kod:
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 @editableZapisz plik Verse i wybierz kolejno Verse > Skompiluj kod Verse w menu głównym UEFN, aby zaktualizować urządzenie Verse.
Podczas testowania poziomu w grze przy użyciu tego urządzenia Verse tekst „Witaj, świecie!” pojawi się w lewym górnym rogu ekranu, gdy gracz wejdzie w interakcję z urządzeniem przycisku.
Usuwanie widżetu
W tym przykładzie pokazano, jak usunąć UI z ekranu gracza, gdy ponownie wejdzie on w interakcję z urządzeniem przycisku:
Otwórz plik Verse utworzony w sekcji Dodawanie widżetu.
Aby w przyszłości, gdy gracz ponownie wejdzie w interakcję z przyciskiem, móc usunąć widżet, musisz przechować widżet w zmiennej, co później pozwoli wykonać odwołanie do niego. Widżety są wyświetlane tylko dla poszczególnych graczy, dlatego musisz zapisać widżet i powiązać go z graczem, dla którego jest wyświetlany, aby móc pobrać odpowiedni widżet dla właściwego gracza.
Utwórz zmienną map o nazwie
MaybeMyUIPerPlayer, która używaplayerjako klucza i opcjonalnego bloku tekstu jako wartości widżetu w mapie. (Uwaga: W tym przykładzie użyto widżetu bloku tekstowego, ale możesz użyć dowolnego widżetu).var MaybeMyUIPerPlayer : [player]?text_block = map{}Gdy będziesz dodawać widżet do UI gracza, zapisz go w zmiennej
MaybeMyUIPerPlayer, aby móc go później usunąć z ekranu. Uzyskiwanie dostępu do elementu w mapie jest wyrażeniem zawodnym, więc ustawienie wartości widżetu w odniesieniu do gracza musi być wywoływane w kontekście niepowodzenia, tak jak wyrażenieif.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}) {}Teraz zaktualizuj funkcję, aby sprawdzić, czy gracz ma już wyświetlony widżet w
MaybeMyUIPerPlayer. Jeśli tak, usuń widżet. Jeśli nie, utwórz nowy widżet, aby gracz mógł go zobaczyć.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}Poniżej znajduje się kompletny kod:
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 @editableZapisz plik Verse i wybierz kolejno Verse > Skompiluj kod Verse w menu głównym UEFN, aby zaktualizować urządzenie Verse.
Podczas testowania poziomu w grze przy użyciu tego urządzenia Verse tekst „Witaj, świecie!” pojawi się w lewym górnym rogu ekranu, gdy gracz po raz pierwszy wejdzie w interakcję z urządzeniem przycisku. Gdy gracz ponownie wejdzie w interakcję z urządzeniem przycisku, tekst zniknie.