Я могу получить доступ в С++ к полю объекта класса

учитывая что класс Spawner BPэшный?, Card Structure тоже BP(и она тоже является одним из полей класса), но его(элемент массива Card Structure) я могу аргументом функции послать(из BP в С++) и изъять составляющие элементы посредством for (AActor* Actor : ArrayActorsFromStructure), но как получить поля если C++ о них не знает? Сделать С++ класс Spawner? или все же есть способы?

37 ответов

8 просмотров

Если есть возможность, сделай базовый класс для элемента Card Structure на С++.

Dethlord- Автор вопроса
Nikolay Bulatov
Если есть возможность, сделай базовый класс для эл...

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

Dethlord
как это решит проблему изьять в рантайме поля с эк...

Чем получение данных экземпляра отличается от получения полей? Элемент массива Card Structure Player 1 - это что?

Можно но это unsafe https://forums.unrealengine.com/t/access-bp-variable-in-c/134256/4

Может больше смысла перенести тогда всю логику в с++?

Dethlord- Автор вопроса
Ilya
Может больше смысла перенести тогда всю логику в с...

Я верхний уровень начал на BP писать чтоб не застрять в коде C++, если сейчас начну переносить это будет попа боль.

Dethlord
Я верхний уровень начал на BP писать чтоб не застр...

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

Dethlord- Автор вопроса

написать структуру на cpp это не проблема, момент в том что класс spawner на бп имеет такую реализацию:

Dethlord
написать структуру на cpp это не проблема, момент ...

Базовый класс для Spawner, сделанный на C++, должен иметь то, с чем будет потом работать код из C++. Если в нём реализация функции не определена (или лень переносить из BP на C++), то сделай только её интерфейс UFUNCTION(BlueprintImplementableEvent), а реализацию функции сделай в наследнике (BP).

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

Dethlord- Автор вопроса
adil the human
я обьясню что мне не понятно я даже не понимаю, ко...

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

Dethlord- Автор вопроса
adil the human
я обьясню что мне не понятно я даже не понимаю, ко...

одно из умений мощного прогера- абстрагирование от того что написал малоопытный.

Dethlord
ну ты не понимаешь, а люди понимают так как сталки...

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

Dethlord- Автор вопроса
adil the human
тогда вопрос. зачем писать тонны текста с вопросам...

вопрос состоял не в том как сделать спаунинг на BP или C++, а как из библы получить доступ к экземплярам, не нужно передергивать!!!

Dethlord- Автор вопроса

вот тут как ты бы кастонул к полям экземпляра класса spawner который полностью на BP. вот мэйн вопрос был

тебе уже ответили что надо сделать спп класс с нужными полями и перенаследовать твой бп-шник

Dethlord- Автор вопроса
adil the human
тебе уже ответили что надо сделать спп класс с нуж...

так я уже принял, это ты говорил что чет не понял

adil the human
тебе уже ответили что надо сделать спп класс с нуж...

Вообще их можно вытянуть вроде анивей, при желании

Dethlord
так я уже принял, это ты говорил что чет не понял

я не понимаю не того что ты пишешь. а зачем ты все это пишешь

Igor Nazarov
Вообще их можно вытянуть вроде анивей, при желании

да я знаю что можно. но зачем творить херню такую

Dethlord
вот тут как ты бы кастонул к полям экземпляра клас...

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

Dethlord- Автор вопроса
Dethlord- Автор вопроса

ну да, смотри 4 варианта как писать прототип: 1. Чистый С++ с минимумом БП( долго, качесвенный код,подход ООП, быстрый код, лучший рефактор) 2. Чистый БП( быстро , макаронный код, рефактор сложен) 3. С++ библиотека + БП( среднее время разработки, логика не растягивается в макаронины, смесь ООП и процедурки,архитектура верхняя на BP, рефактор вполне сносный. 4. С++ реализация в отдельных файлах+ БП( среднее-долгое время разработки, подход ближе к ООП, архитектура верхняя на BP, рефактор вполне сносный.

А мог бы курсы купить двухнедельные или видео на 48 часов на ютубе посмотреть и уже был бы архитектором в сбере с зп 600к+

Dethlord
ну да, смотри 4 варианта как писать прототип: 1. Ч...

Что значит "реализация в отдельных файлых"? Типо разбивание логики по разным файлах?

Dethlord- Автор вопроса

Важно то, что BP выстроит понимание основных взаимодействий с движком, подготовит плацдарм в мозге для дальнейшего заполнения ассоциаций познанного с С++. Сам BP это не отдельный язык в контексте функциональности, это и есть движок. C++ в движке(в твоих классах), специфичен тем, что ты будешь оперировать в пределах движка( пользоваться уже написанными функциями, контейнерами и это обяжет следовать некоторым фундаментальными(в контексте основы) правилами работы с ним. BP более «сахарный» чем с++ это накладывает на него отпечаток(как и в любом ЯП), и так как BP оперирует исключительно с самим движком - то его функционал ограничен рамками движка, С++ позволяет работать не только с окружением движка, но и позволит выйти за его пределы. BP хорош в быстром прототипировании чем С++, он и не заменяет С++ и также не исключает его(гибридная архитектура). Те части программы которые имеют много логики и тяжелы в расчетах, лучше перенести в С++. На этапе разработки, можно выявить просадки производительности инструментами движка и переписать на С++ тяжелые части, но это больше относится к большим играм. Естественно, если не найдена эвристика для реализации оптимального алгоритма, то проблемы производительности можно словить и в маленьком проекте.( это относится и к BP и к С++, но последний будет предпочтителен в такой ситуации)

Dethlord
Важно то, что BP выстроит понимание основных взаим...

Ну это все применимо и к плюсам, на самом деле. БП поможет лишь не запутаться в каком-то базовом месте. Но с тем же успехом, в некоторых вещах он может наоборот помочь запутаться. Например ты в блупринтах начнешь делать что-то такое:

Ну это уже от человека зависит) У нас таких дохрена итак) Но если чел все же будет этим интересоваться и заниматься, кто сказал, что он по такому пути не станет спецом?)

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

Alexander Blintsov
Ну это уже от человека зависит) У нас таких дохрен...

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

Vladimir Alyamkin
Я смотрю вдолгую. Воронка жуткая на самом деле. Ша...

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

Я на четвертом курсе написал свой калькулятор на QT вроде все было отлично

Dethlord- Автор вопроса
Igor Nazarov
Я на четвертом курсе написал свой калькулятор на Q...

я долго занимался длинной арифметикой и теорией чисел( написал свою библу)

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

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

у меня такой вопрос про память в x86 возник, может кто пояснить?.. у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше)...
Toideng
5
Я колись ставив гуглу антиспам 3.0, може і норм, але мені не дуже зайшло. Теж думав тиждень, що його і куди. Зупинився на трех варіантах відразу всі три і включив 1. Перевір...
𝓔𝓾𝓰𝓮𝓷𝓮𝓥 J
2
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
14
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
здравствуйте, братья, кто-нибудь знает, как работать с Swift.com или Swift.net?
Ozzy
6
Приветствую всех, возникла проблема, до этого писал бота в простом формате где при выполнении условий приходило через send_message информация, сейчас решил добавить хендлер на...
Andrew
4
Портфолио: Зовут меня Александр, мне 41 год. Город Киров. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github.co...
Magic
11
Всем привет, может уже кто-то пытался выдернуть из api информацию о дате рождения пользователя Есть ли вообще такая возможность?
Artem Stormageddon
2
где собака, админ группы? нычкуется и боится проявить волю, в толерантность еще не наигрался? @yelizariev
Ognezar
61
Приветствую всех, есть вопросик. Передали проект на OctoberCms, без инсталяшки в полуразвернутом виде, нужно было залить бекап бд, после залития бд, оказалось, что части строк...
Лео
14
Карта сайта