Unreal Engine 4
http://uengine.ru/forum/

Передача переменной в виджете
http://uengine.ru/forum/viewtopic.php?f=3&t=12837
Страница 1 из 1

Автор:  MarkiZzZ [ 10 дек 2017, 14:51 ]
Заголовок сообщения:  Передача переменной в виджете

У меня есть 2 виджета инвентарь и генерирующиеся внутри него кнопки, как мне в кнопке получить ссылку на инвентарь?

Автор:  icms [ 10 дек 2017, 18:08 ]
Заголовок сообщения: 

Хорошей практикой является использовать GameInstance. Т.е. гейминстансе мы храним ссылку на наш инвентарь. В виджежете делаем переменную типа гейинстанс и простым кастом линкуем её к нашему гейм инстанс. А дальше в этом виджете будет доступен прямой доступ биндить переменные из инветаря к виджету.

Автор:  Snake [ 10 дек 2017, 20:46 ]
Заголовок сообщения: 

я не думаю что использовать гейм инстанс для буффера это хорошая практика в данном случае...
это обычно простое временное решение при разработке прототипа.

хорошая практика это логически-иерархическая зависимость владельцев обьектами.
должна быть потсроенна логическая иерархия и принадлежность обьектов, и по этой иерархии получать все необходимое.
тоесть кому виджет принадлежит от того и получать всю необходимую информацию. например в момент создания все передавать/брать/обновлять

для этого нужно избавиться от привычки создавать инстансы обьектов из несвязанных обьектов... как обычно любят в туторах длля новичком показывать.
потому что если в гейм инстанс засунуть скажем все "инвентари" из уровня, то это ничем не будет отличаться от "инвентарей" просто в уровне?

Автор:  Prytaleks [ 10 дек 2017, 23:53 ]
Заголовок сообщения: 

пацану надо кастануть хоть как нибудь, я думаю ему не до хорошего тона))

Автор:  icms [ 11 дек 2017, 00:56 ]
Заголовок сообщения: 

Как раз для инвентаря инстанс даже очень подходит так как при переходе на другой уровень он не уничтожается. Разница небольшая, но отпадает необходимость что то загружать сохранять, доступ прост из любого места. Скажу так инстанс как раз для этого и сделан. Зачем что то своё городить когда в уе это уже предусмотрено.Ну или их офф туторы тоже неверны )))))))))))))

Автор:  Snake [ 11 дек 2017, 01:55 ]
Заголовок сообщения: 

я не утверждаю что так не делают... я сам так делаю когда нужно какую-то ссылку у не связаных обьектов получить
(не с инвентарем прадва), просто не считаю это "хорошей практикой"...

это как раз самый простой и дилетантский выход - тупо буфер сооздать где-то(неважно где, гейм стейт, гейм инстанс, или создать обьект-менеджер и т.п.).
И у этого способа много недостатков. Например независимоть от класса гейм инстанса уже теряется.
С независимыми обьектами намного проще обращаться, и лучше по общему свойству анриаловских обьектов связь делать, а у любого обьекта всегда есть владелец. Что позволяет всегда получить ссылку на владельца(в принтах иногда нельзя, но С++ можно всегда) и через общий интерфейс получить нужные данные.

Автор:  MarkiZzZ [ 11 дек 2017, 21:22 ]
Заголовок сообщения: 

Snake, честно не понял что ты имееш ввиду(в чем минус этого способа), я пока сделал так, а заодно и половину говнокода удалил, вроде так работает, так что спасибо всем

Автор:  Snake [ 11 дек 2017, 21:59 ]
Заголовок сообщения: 

Цитата:
в чем минус этого способа

абстрагируемся от инвентаря, просто произвольный виджет который должен отобразиться на екране.
если делать буфер обмена в гейм инстансе то это будет частная зависимая реализация. в которойгейм инстанс просто лишний.
что делать если нужно отобразить... ну незнаю... скажем статы юнитов 100 шт. ? или иформацию о сундуках на уровне? кароче любую инфу в множественном числе. в гейм инстансе просто свалка ссылок переменных будет, ничем не отличающаяся от мира.
отобразить информацию только у выделенных обьектов? скажем 10шт из 100...?
и для каждого нового типа таких виджетов нужно опять чето писать в гейм инстансе... ну бред же. все должно работать независимо.

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

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/