Приветствую! Подскажите пожалуйста, я хочу сделать возможность создания компонентов для

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

16 ответов

13 просмотров

CreateDefaultSubobject вроде бы можно вызывать исключительно из конструктора С++, то есть до рантайма игры. Юзай вместо него NewObject

Святослав-Коновалов Автор вопроса

Спасибо, попробую!

Дело в том, что CreateDefaultSubobject помимо спавна делает ещё много всего, например создаёт дефолтный объект если он ещё не создан (CDO)

https://answers.unrealengine.com/questions/867848/right-method-to-spawn-component-at-runtime-in-2019.html Посмотри в ответах, там есть пример как правильно это сделать

Святослав-Коновалов Автор вопроса

У меня получилось создавать компоненты, и я могу работать с ними из плюсов, но я хочу чтобы их можно было изменять в эдиторе. Если бы я объявлял компоненты в конструкторе, то нужно было бы использовать UPROPERTY. А что делать если я их создаю? Нигде не могу найти ответ(

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

Святослав-Коновалов Автор вопроса

Понял, спасибо

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

Святослав-Коновалов Автор вопроса

Акторы в принципе можно будет использовать, но там есть пара минусов, спасибо за совет) У меня вообще задача создать объект из кучи(до сотни) мелких объектов. И потом там пазл из этого будет. Я хотел облегчить работу тем кто будет это собирать и создать объекты с помощью Construction Script, но раз анрил так не умеет, то придётся или страдать сборщикам, или поменять концепцию)

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

Святослав-Коновалов Автор вопроса

Да, я понимаю что человек может сам добавить компоненты, но когда нужно сделать 10-20 акторов, в каждом по 100 компонентов, и всё вручную, становится как-то грустно) Ещё раз спасибо большое за советы, думаю как раз GetComponents и буду использовать в итоге

Я просто немного не понял как именно ты им работы хочешь облегчить) я так понял, что их работа и состоит в том, что бы в ручную выбирать компоненты и самим их цеплять на эктора)

Святослав-Коновалов Автор вопроса

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

золотые слова. меня это часто приводило к груде утилит, которые чтобы объяснить, надо еще парочку утилит написать :)

Если объект состоит например из n-количества компонентов класа A, и из m-количества компонентов класса B и т д.. То можно сделать переменные в классе, которые предоставить для установки тому, кто будет работать в блупринте, а самому в OnConstruction прописать уже спавн, взяв значения из этих переменных

Похожие вопросы

Обсуждают сегодня

Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
7
Я правильно понимаю что нет способов получить список ожидающих заявок на вступление в группу с помощью бота из mtproto?
Шамиль Прилов
7
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
Вопрос на перед, на следующую пятницу. Сколько строк кода можно вешать на одного программиста, понятно что если проект хорошо написан то можно и миллион. Но есть же где то пре...
AlekseyK Kluchnikov
31
Немного оффтопа: а кто на чем сидит для осдева в плане ide/редактора? Последнее время сидел на vscode, но я его прям не могу нормально воспринимать, перешел на сlion, но меня...
Evg Resh
29
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Что за японодичь? Мне хоть m68k, хоть 8080, 8088, на любом можно что-то создать
Егор
5
Вот объясните, как это работает: Вот есть допустим unix-подобная система, и программа запускает допустим printf или fork, как это передается ядру, и как оно обрабатывать начин...
Егор
14
и да, кто сказал что у эпла именно такой isa?
Boris Vinogradov
5
Добрый день. Мне посоветовали обратиться к вам в чат за помощью. Ситуация описана на скрине. Как мне сказали, мне на бота навесили флудвейт. Есть ли возможность снять его ра...
OVERLINK
7
Карта сайта