Gdy wszystkie urządzenia są rozmieszczone, czas na skonfigurowanie ich interakcji.
Powiązanie bezpośrednie zdarzeń umożliwia urządzeniom bezpośrednią komunikację ze sobą przy użyciu zdarzeń i funkcji. Dowiedz się więcej w tym miejscu.
Urządzenie A | Funkcja | Urządzenie B | Zdarzenie | Wyjaśnienie |
---|---|---|---|---|
Pusta bariera 1 i 2 ![]() |
Wyłącz | Licznik czasu ![]() |
W momencie powodzenia | Gdy licznik czasu odliczy do końca, bariery znikną. |
Nieprzezroczysta bariera ![]() |
Wyłącz | Licznik czasu ![]() |
W momencie powodzenia | Gdy licznik czasu odliczy do końca, bariera zniknie. |
Oto zrzut ekranu przedstawiający wygląd po ustawieniu powiązania:

Powiązanie bezpośrednie zdarzeń w Verse
Możesz też użyć Verse, aby zaprogramować logikę urządzenia.
Pierwszy krok to utworzenie własnego urządzenia przy użyciu Verse. Aby dowiedzieć się więcej, przeczytaj przewodnik Opanuj podstawy pisania kodu w języku Verse, następnie wróć na tę stronę i zastosuj poznane koncepcje.
Musisz teraz odwołać się do urządzeń, którymi będziesz sterować w swoim skrypcie Verse.
Potrzebujesz 3 urządzeń bariery barrier_device
i 1 urządzenia licznika czasu timer_device
:
box_fight_manager := class<concrete>(creative_device):
Logger:log = log{Channel:=box_fight_log}
@editable
Barrier1:barrier_device = barrier_device{}
@editable
Barrier2:barrier_device = barrier_device{}
@editable
MidBarrier:barrier_device = barrier_device{}
@editable
Timer:timer_device = timer_device{}
Skompiluj swój kod i przeciągnij menedżera walki na budowle box_fight_manager
do poziomu, następnie wybierz odpowiednie urządzenia:

W tym przykładzie licznik czasu Timer
powinien uruchamiać się sam w chwili rozpoczęcia gry. Po upływie ustalonego czasu Timer
kończy się powodzeniem, a bariery są wyłączone.
Zasubskrybuj SuccessEvent
licznika Timer
w chwili rozpoczęcia gry:
OnBegin<override>()<suspends>:void=
Timer.SuccessEvent.Subscribe(DropBarriers)
Zostanie wywołana funkcja opuszczania barier DropBarriers
, która wyłącza wszystkie trzy bariery:
DropBarriers(Player:?agent):void=
Barrier1.Disable()
Barrier2.Disable()
MidBarrier.Disable()
Uwaga: SuccessEvent
oczekuje wywołania funkcji, która przyjmuje argument agent
.
Skompiluj swój kod. To wszystko! Możesz wykonać test gry wyspy.
Oto kompletny skrypt jako źródło odniesienia:
using { /Fortnite.com/Devices }
using { /Verse.org/Native }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
box_fight_log:=class(log_channel){}
box_fight_manager := class<concrete>(creative_device):
Logger:log = log{Channel:=box_fight_log}
@editable
Barrier1:barrier_device = barrier_device{}
@editable
Barrier2:barrier_device = barrier_device{}
@editable
MidBarrier:barrier_device = barrier_device{}
@editable
Timer:timer_device = timer_device{}
OnBegin<override>()<suspends>:void=
Timer.SuccessEvent.Subscribe(DropBarriers)
DropBarriers(Player:?agent):void=
Barrier1.Disable()
Barrier2.Disable()
MidBarrier.Disable()
Przeprowadzanie testu gry wyspy
Udało ci się!
Gdy wszystko będzie skonfigurowane i gotowe, przetestuj swoją wyspę w grze, aby upewnić się, że działa zgodnie z oczekiwaniami w Fortnite.
Aby opublikować swój projekt, patrz Publikowanie projektu.