Войти
Unreal EngineФорумОбщее

Не происходит передача между виджетами

#0
(Правка: 9:49) 9:45, 19 янв. 2021

Приветствую.

Столкнулся с необычным для меня поведением переменной.

У меня есть виджет. На нем кнопка, при нажатии на которую, должен открыться новый уровень и новый виджет. В этот виджет должна передаться информация в переменную. Делаю всё как обычно с объектами - в первом виджете делаю Create Vidget, записываю его в переменную. Затем в нем нахожу переменную, в которую нужно передать значение, записываю значение, передаю виджет во вьюпорт и всё - нихера ничего не передается.
Пытался сделать всё тоже через переменную, созданную в игроке - те же яйца, только в профиль, переменная читается, на точках останова данные в первом виджете записываются, во втором виджете - None.

Скрин первого виджета
19.01.2021_3 | Не происходит передача между виджетами

Скрин второго виджета.
2 | Не происходит передача между виджетами


#1
9:50, 19 янв. 2021

Может нужно как то иначе передавать данные между переменными виджета?
Cast так же не работает, пробовал, но скрин не делал.

#2
9:52, 19 янв. 2021

Мне кажется, где-то теряется ссылка на переменную виджета. Попробуйте сделать создание виджетов, со ссылкой, добавлением во вьюпорт при begin play самого игрока (и сразу скрывать их), а при передаче переменных используйте ссылки из игрока. Ну вот лично у меня так работает.

#3
10:08, 19 янв. 2021

papa_Lev
У меня далее есть другие виджеты и между ними всё передается отлично, но там отличие - не подгружается новый уровень (карта).

Через Игрока я так же пытаюсь передавать - тоже происходит потеря.

Сейчас попробую через GameInstance - но мне непонятно, почему в указанном случае происходит потеря информации.

#4
10:19, 19 янв. 2021

Да, кстати, новый уровень не заметил, там же переменные теряются при загрузке. Я тоже тогда храню в PlayerState или GameInstance. Возможно, при загрузке уровня Pawn ещё раз создаёт виджет уже с другим номером (например, у меня при загрузке уровня, если уже он был загружен, второй раз срабатывает begin play в Pawn'е). Можно проверить догадку, взяв Get All Widget of Class. А с новыми уровнями нужно быть аккуратнее, да и виджеты - штука специфическая.

#5
10:33, 19 янв. 2021

papa_Lev
> Можно проверить догадку, взяв Get All Widget of Class. А с новыми уровнями
> нужно быть аккуратнее, да и виджеты - штука специфическая.

С виджетами через GetAll - тоже уже обжигался. ) Нет, номер виджета совпадает, в общем я не вижу видимых причин для потери данных.

Опять же - хрен с ним с виджетами, я тоже предположил, что происходит пересоздание виджета, даже при отсутствии Create. Но Player то не перезагружается, по идее. Но в нем то данные тоже теряются. А через GetInstance потерь нет.

Вопрос передачи я решил, но для общего понимания, хотел бы прояснить для себя - что и почему происходит. Такое интересное и неявное поведение переменной. )

#6
10:38, 19 янв. 2021

defond
> Такое интересное и неявное поведение переменной

Тут надо курить OpenLeveL. Я загуглил, люди советуют передавать переменные при открытии и хранить их в GameInstance.

#7
10:57, 19 янв. 2021

papa_Lev
> Тут надо курить OpenLeveL

Ок. Спасибо. )

Но пока GameInstance справляется, не вижу смысла забивать голову. Столкнулся с необычным поведением. )

Слушай, нескромный вопрос - не встречал ни где анимацию езды поезда? )))) С паром, дымом и кручением колес ))))

#8
13:00, 19 янв. 2021

defond
> пока GameInstance справляется, не вижу смысла забивать голову
Приветствую настоящего программиста из Лиги Лени!

defond
> не встречал ни где анимацию езды поезда?
Понятия не имею, где-либо на бесплатных ресурсах по скачиванию артов и тегу "поезд", вероятно.

#9
14:34, 19 янв. 2021

papa_Lev
> Приветствую настоящего программиста из Лиги Лени!

Бритва Оккамы ) Самое простое решение - самое верное. Я не хочу увеличивать энтропию во Вселенной и повышать её температуру ))

Unreal EngineФорумОбщее