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

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

37 ответов

27 просмотров

Если есть возможность, сделай базовый класс для элемента 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...

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

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

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

Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
А в каком формате фреймы? Сам формат сейчас придумываешь, или что-то готовое нужно распарсить?
Okhsunrog
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Карта сайта