Полезное

Мы Вконтакте

Discord канал

#
Модератор: icms
Аватара пользователя
Пользователь
Сообщения: 2319
getAllAсtor(класс интерфейс и тд) - можно использовать когда ну никак не получается получить реф на обьект , или действительно нужны все акторы. А когда нужен всего один надо искать способ получить реф на него, и "гет алл акторс..." должен быть последним из инструментов когда остальные себя исчерпали.

Изображение
а вот такого я не знал, что у массива можно вызвать функцию, это полезно будет.
_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 4069
Snake писал(а):
getAllAсtor(класс интерфейс и тд) - можно использовать когда ну никак не получается получить реф на обьект

помоему так не бывает))

p.s. getAllAсtor на мой взгляд целесообразно юзать для чего нибуть типа сохранения игры.
Аватара пользователя
Пользователь
Сообщения: 469
Чаще всего(как я думаю в 99%) при GetAllActorsofClass мы обращаемся ни к огромному классу с десятками наследников и сотнями экземпляров, а всего к одному содержащим какой то функционал. Так что ни о какой нагрузке быть речи не может и о путанице с экземплярами тоже. И способ вполне правильный и функциональный.

На данный момент вывел для себя схему следующую. Опять таки не утверждаю что она идеальна!
Для всех бп и виджетов которых не миллион одинаковых т.е., а те которые содержат функции управления игрой - решил использовать следующую схему: для бп которые содержат некий функционал и заведомо известно что будут обращаться к друг другу в GameInstance создаю прямые ссылки на них. И в дальнейшем как в способе с DirectBPConnections обращаюсь непосредственно к переменной содержащей конкретный экземпляр класса, предварительно взяв его CasttoGameIntance.
Не идеально , НО в коде уменьшается количество нод на много и никаких кастов в теле программы и никаких GetAllActors of Class и тому подобного. Можно конечно тоже самое делать интерфейсом , но смысл создавать интерфейс для 2х бп, он рассчитан на работу с массовкой.
Как то так ;)
_________________
Project SKIT
Аватара пользователя
Пользователь
Сообщения: 2319
ну я в гейм стейте(у каждого уровня может быть свой) храню то к чему часто приходится обращаться.
или например какой-нить "Левел менеджер БП" реф которого хранится в гейм стейте а внем хранится что нужно.

Но в большинстве случаев у меня есть прямой реф, ну или на крайний случай реф-актор, а там интерфейс(чаще) или каст(на крайняк).

нидс пруф: "гет алл акторс" сама по себе затратна, по идее, в теории(!) она берет вообще всех акторов потом фильтрует по классу но это лишь мое предположение не больше. Чтоб проверить можно тест провести конечно, или лучше в код заглянуть.

PS:быстро прогуглил
https://docs.unrealengine.com/latest/IN ... index.html
Цитата:
This is a slow operation, use with caution

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


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

p.s. это больше вопрос стиля программиста, я в принципе отношусь к коду и к процессору, как к живому существу, и всегда стараюсь что бы ему было легче, хоть на тике, хоть не на тике))
Аватара пользователя
Пользователь
Сообщения: 995
Prytaleks писал(а):
если такая фигня на тике не висит, очень вряд ли, что оно приведет к видимому падению фпс.

Я вот тоже проблем не вижу. В Бегин-плей его или вообще в констракт скрипт и можно 100-500 штук однократно пересчитать. Да и если массив этих актеров из 1-3 элементов состоит, на производительности и в каждом кадре видно не будет. Тем более предполагаю(скорей ошибаюсь), если не перечислять массив, а обращаться через индекс к конкретному будет тем же рефом, то-есть можно и в тик вешать.
Последний раз редактировалось Vladimir488 26 апр 2017, 08:18, всего редактировалось 1 раз.
Аватара пользователя
Пользователь
Сообщения: 2319
сам сбор акторов в массив затратный, и чем больше любых акторов на уровне тем тяжелей будет эта операция. Я не говорю не использовать, но если есть другой способ получить реф вероятно лучше воспользоваться им, ну и в рантайме лучше не злоупотреблять, лучше сохранить "разово собранный массив" чем каждый раз искать его по новой.
_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 2319
вопрос:
какое условие должно быть соблюдено у принта чтоб из массива вызвать функцию?
Изображение
почему я могу вызвать одну фугкцию, но нет вызова второй? Вообще похоже что вызов функции из массивов это баг?
при чем с интересными деталями...
если на ввод функции поставить переменную массива акторов - она становится видна для вызова, вызываем а потом меняем переменную на какую угодно(в примере флоат у Fn_1) и она пропадает из списка вызова.
_________________
we need to go deeper
Последний раз редактировалось Snake 25 июн 2017, 17:46, всего редактировалось 1 раз.
Аватара пользователя
Пользователь
Сообщения: 469
Ну насчёт замены с одного типа на другой действительно похоже на глюк. А насчёт вызова функции из массива так вообще норм, я постоянно пользуюсь. Типа команда всем сразу что бы через цикл не перебирать.
_________________
Project SKIT
Аватара пользователя
Пользователь
Сообщения: 2319
Цитата:
А насчёт вызова функции из массива так вообще норм, я постоянно пользуюсь.

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

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

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


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

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