Полезное

Мы Вконтакте

Discord канал

#
Модератор: icms
Аватара пользователя
Пользователь
Сообщения: 7
Всем привет, нужна помощь.
Есть на сцене Actor в котором Event On Interaction, при взаимодействии с ним появляется виджет, на виджете есть кнопки, при нажатии на кнопку уже у другого Actora на сцене меняется материал, размер и т.д.

Как в UMG указать референс или каст (Не знаю что правильнее, т.к. пока мало разобрался в BP) на Actor'a на сцене и при нажатии на кнопку поменять ему материал и размер?
Аватара пользователя
Пользователь
Сообщения: 4069
актор должен на бегин плее записать себя, например в гейм инстанс, в виджете каст на гэйминстанс и вытаскуй переменую с ссылкой на актор запиши эту переменую в такуюже только в виджете, да бы все время потом не кастовать на гейминстанс.

Вообщем для связи между акторами, тебе нужен зарезервированый БП, к которому всегда можно получить доступ, гэйм инстанс, плеер чарактер, контролер и мб гейммод.
Аватара пользователя
Пользователь
Сообщения: 7
Prytaleks, спасибо, более менее теперь понял куда и как записывать переменную актор
Аватара пользователя
Пользователь
Сообщения: 4069
проследи что бы ссылка записалась в гэйминстанс раньше, чем ты к ней обратишься.
Аватара пользователя
Пользователь
Сообщения: 7
Я её записал в персонажа, а каст сделал в Level BP на актора и поставил на Event Begin Play, т.е. при запуске она сразу срабатывает

P.S. где лучше всего хранить записанные переменные? Возможно их потом будет много..
Аватара пользователя
Пользователь
Сообщения: 4069
Kenny28Rus писал(а):

P.S. где лучше всего хранить записанные переменные? Возможно их потом будет много..


переменные чарактера, нужно хранить в чарактере, или в акторах которые их содержат, глобальные переменные, например булевая которая определяет что идет загрузка игры, нужно хранить в гэйминстансе. А все нейтральные переменные, ссылки на разные акторы, я храню, в обычном БП типа актор, который я называю ЛевелЛогик.
Вообщем координально разницы нет где что хранить, это вопрос удобства, но в гейминстансе есть отличие от других БП, переменные не теряют значения, при загрузке следующего левела, ссылки на объекты из предыдущего левела естественно пропадут.
Аватара пользователя
Пользователь
Сообщения: 2319
разница в том - чтоб при написании логики, было понятно где искать рефы. Взаимосвязанные вещи обычно вместе хранятся.

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

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

могу прдположить что виджет создается без изначальной связи с актором, раз такие вопросы возникают, по типу :актора поставили на сцене, виджет запустили из левел блупринта... не думаю что что хорошая идея так делать, взаимосвязанные вещи - должны быть взаимосвязанными изначально.
_________________
we need to go deeper


Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15

UEngine.ru © 2017
Все права защищены. При копировании материалов с сайта, ссылка на первоисточник обязательна.
Яндекс.Метрика
Главная страница