получить доступ к переменной из чертежа уровня в Unreal Engine 4

У меня есть переменная, которая обновляется каждый раз, когда я перемещаю свой куб в схему уровня, теперь я хочу получить доступ к этой переменной из нескольких схем классов, что мне делать, я пробовал преобразовать в gamestate, но не добился успеха, я действительно новичок в ue4 не могли бы вы подробно объяснить, пожалуйста

edit: извините за то, что не добавляю детали, var, к которому я хочу получить доступ, представляет собой целое число с именем cube_side, которое сообщает мне, на какой стороне куб находится каждый раз, когда я двигаюсь, все это происходит на уровне bp, я хочу получить доступ к этой переменной, чтобы увидеть с какой стороны куб находится по сравнению с чертежами других классов - ›вот некоторые детали на картинке

Я знаю, что нехорошо кодировать все в схеме уровня, но сейчас уже слишком поздно, мне нужно только передать var cube_side в другие схемы классов, чтобы другой объект мог изменяться в зависимости от того, на какой стороне находится куб.


person Ilyas Ennaboulsi    schedule 04.06.2018    source источник
comment
Я чувствую, что ваша переменная лучше подходит для игрового режима или чего-то другого, чем план уровня. Он должен иметь возможность легко перейти к одному из них, поскольку в нем есть только функции и переменные. Затем вы можете вызвать свой игровой режим и получить оттуда доступ к переменной и т. Д. Все, что вам нужно сделать, это скопировать, вставить и воссоздать переменные.   -  person Dtb49    schedule 05.06.2018


Ответы (2)


Создайте класс актера для своей логики / функциональности. Затем используйте Получить всех участников класса (выберите свой класс) - ›Получить копию -› Получить переменную

введите здесь описание изображения  введите описание изображения здесь

person Brian    schedule 24.08.2018

Связь с планом уровней в UE4 довольно сложна, поскольку они не такие постоянные, как, например, GameMode, и поэтому к нему нельзя обращаться напрямую (представьте себе старые игры, такие как Final Fantasy, где новый уровень загружался каждый раз, когда вы выходили за границу, поэтому полагаясь на него, вы потенциально можете сломать ваших актеров или вывести игру из-за nullptr).


Это немного взломано, но работает:

Переместите переменную внутрь куба-чертежа. Добавьте в куб диспетчер событий, если он перемещается, вызовите его и передайте переменную.

Выберите куб в редакторе, откройте план уровня, щелкните правой кнопкой мыши, «добавить ссылку на выбранного актера» (куб должен быть частью класса blueprintclass, а не только перетаскиваемой статической сеткой) и привяжите диспетчер событий внутри Уровень БП.

Создайте функцию внутри каждого чертежа, которому нужен доступ к переменной, которая делает то, что должна делать, в зависимости от переменной.

Пользовательское событие уровня Bp (которое было привязано к диспетчеру событий куба) требует ссылок на всех действующих лиц, которые должны работать, когда переменная изменяется и вызывает каждую функцию акторов (вы можете получить ссылки, как если бы вы получили одну из куба)

Затем, каждый раз, когда переменная изменяется, уровень BP уведомляется, настраиваемое событие выполняется, и это настраиваемое событие вызывает все функции актора.

Объяснение диспетчеров событий


Это огромная трата функций / кода, так как он вам нужен только на этом уровне и вы можете никогда не использовать его снова. Избегайте этого в будущем, не слишком полагаясь на уровень АД.

person Community    schedule 04.06.2018
comment
Я изменил вопрос, если вы хотите прочитать его еще раз, и большое спасибо за вашу помощь - person Ilyas Ennaboulsi; 04.06.2018