Приветствую.
Столкнулся с необычным для меня поведением переменной.
У меня есть виджет. На нем кнопка, при нажатии на которую, должен открыться новый уровень и новый виджет. В этот виджет должна передаться информация в переменную. Делаю всё как обычно с объектами - в первом виджете делаю Create Vidget, записываю его в переменную. Затем в нем нахожу переменную, в которую нужно передать значение, записываю значение, передаю виджет во вьюпорт и всё - нихера ничего не передается.
Пытался сделать всё тоже через переменную, созданную в игроке - те же яйца, только в профиль, переменная читается, на точках останова данные в первом виджете записываются, во втором виджете - None.
Скрин первого виджета
Скрин второго виджета.
Может нужно как то иначе передавать данные между переменными виджета?
Cast так же не работает, пробовал, но скрин не делал.
Мне кажется, где-то теряется ссылка на переменную виджета. Попробуйте сделать создание виджетов, со ссылкой, добавлением во вьюпорт при begin play самого игрока (и сразу скрывать их), а при передаче переменных используйте ссылки из игрока. Ну вот лично у меня так работает.
papa_Lev
У меня далее есть другие виджеты и между ними всё передается отлично, но там отличие - не подгружается новый уровень (карта).
Через Игрока я так же пытаюсь передавать - тоже происходит потеря.
Сейчас попробую через GameInstance - но мне непонятно, почему в указанном случае происходит потеря информации.
Да, кстати, новый уровень не заметил, там же переменные теряются при загрузке. Я тоже тогда храню в PlayerState или GameInstance. Возможно, при загрузке уровня Pawn ещё раз создаёт виджет уже с другим номером (например, у меня при загрузке уровня, если уже он был загружен, второй раз срабатывает begin play в Pawn'е). Можно проверить догадку, взяв Get All Widget of Class. А с новыми уровнями нужно быть аккуратнее, да и виджеты - штука специфическая.
papa_Lev
> Можно проверить догадку, взяв Get All Widget of Class. А с новыми уровнями
> нужно быть аккуратнее, да и виджеты - штука специфическая.
С виджетами через GetAll - тоже уже обжигался. ) Нет, номер виджета совпадает, в общем я не вижу видимых причин для потери данных.
Опять же - хрен с ним с виджетами, я тоже предположил, что происходит пересоздание виджета, даже при отсутствии Create. Но Player то не перезагружается, по идее. Но в нем то данные тоже теряются. А через GetInstance потерь нет.
Вопрос передачи я решил, но для общего понимания, хотел бы прояснить для себя - что и почему происходит. Такое интересное и неявное поведение переменной. )
defond
> Такое интересное и неявное поведение переменной
Тут надо курить OpenLeveL. Я загуглил, люди советуют передавать переменные при открытии и хранить их в GameInstance.
papa_Lev
> Тут надо курить OpenLeveL
Ок. Спасибо. )
Но пока GameInstance справляется, не вижу смысла забивать голову. Столкнулся с необычным поведением. )
Слушай, нескромный вопрос - не встречал ни где анимацию езды поезда? )))) С паром, дымом и кручением колес ))))
defond
> пока GameInstance справляется, не вижу смысла забивать голову
Приветствую настоящего программиста из Лиги Лени!
defond
> не встречал ни где анимацию езды поезда?
Понятия не имею, где-либо на бесплатных ресурсах по скачиванию артов и тегу "поезд", вероятно.
papa_Lev
> Приветствую настоящего программиста из Лиги Лени!
Бритва Оккамы ) Самое простое решение - самое верное. Я не хочу увеличивать энтропию во Вселенной и повышать её температуру ))