Все устройства размещены, и пора настроить их взаимодействие.
Прямая привязка событий позволяет устройствам напрямую взаимодействовать друг с другом через события и функции. Узнайте больше об этом здесь.
Устройство A | Функция | Устройство B | Событие | Пояснение |
---|---|---|---|---|
Полые барьеры 1 и 2 ![]() |
Отключить | Таймер ![]() |
При успехе | Когда время отсчёта таймера истечёт, барьеры исчезнут. |
Непрозрачный барьер ![]() |
Отключить | Таймер ![]() |
При успехе | Когда время отсчёта таймера истечёт, барьер исчезнет. |
На снимке экрана показаны выполненные настройки привязки:

Прямая привязка событий с помощью Verse
Вы также можете использовать Verse для программирования логики устройства.
Первое, что вам нужно сделать — это создать собственное устройство с помощью Verse. Для получения более подробной информации ознакомьтесь с Основами написания кода в Verse, а затем попробуйте применить полученные знания на практике.
Итак, вам необходимо настроить ссылки на устройства, которыми вы будете управлять с помощью сценария Verse.
Вам понадобятся 3 устройства barrier_device
и 1 устройство 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{}
Скомпилируйте код и перетащите box_fight_manager
на уровень, а затем выберите соответствующие устройства:

В этом примере Timer
запускается самостоятельно в начале игры. По истечении заданного времени Timer
сработает и барьеры будут отключены.
Подпишемся на событие SuccessEvent
класса Timer
в начале игры:
OnBegin<override>()<suspends>:void=
Timer.SuccessEvent.Subscribe(DropBarriers)
Вызываемая функция DropBarriers
отключает три барьера:
DropBarriers(Player:?agent):void=
Barrier1.Disable()
Barrier2.Disable()
MidBarrier.Disable()
Обратите внимание, что событие SuccessEvent
должно вызывать функцию, которая принимает аргумент agent
.
Скомпилируйте код, и вуаля! Остров готов к игровому тесту.
Ниже представлен полный сценарий:
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()
Игровой тест острова
Готово!
После выполнения всех настроек выполните игровой тест острова, чтобы убедиться, что он работает в Fortnite должным образом.
Чтобы Опубликовать свой проект, обратитесь к странице Публикация проектов.