Урок 12 | Unreal Engine 4 Blueprint - Cast Обмен данными между Blueprints

Поделиться
HTML-код
  • Опубликовано: 15 ноя 2024

Комментарии • 117

  • @ДенисНагорный-й4н
    @ДенисНагорный-й4н 3 года назад +33

    Очень важная и полезная инфа. доходчиво объясняешь, только меня лично музыка на фоне отвлекает

  • @MosheDayan-v5f
    @MosheDayan-v5f 5 месяцев назад

    Автор, спасибо большое за уроки! Очень крутой стиль повествования и крайне понятное объяснение! Не бросайте не смотря ни на что, у Вас талант!

  • @gagiktamrazyan771
    @gagiktamrazyan771 4 года назад +4

    Очень исчерпывающе )) правда не с первого раза все понял, но каждый раз напоминаю себе: "Ты гуманитарий !"

  • @sxpv
    @sxpv Год назад +1

    Кайф спасибо. Все время забываю, что надо оборачивать блюпринт в переменную, чтобы к нему обращаться

  • @JekaG81
    @JekaG81 5 лет назад +5

    Подробно, доступно, без лишнего! Самое оно!

  • @TheFruitcake1983
    @TheFruitcake1983 3 месяца назад

    Наконец-то кто-то нормально объясняет

  • @kristiandeimos6533
    @kristiandeimos6533 2 года назад +1

    Приходится пипец как фокусироваться чтобы что то понять из за музыки. Она со всякими клэпми и бассами, ооочень отвлекает. А так лайк ♥

  • @gamein513
    @gamein513 5 лет назад +3

    Интересный обзор ролика, возьму к сведению

  • @ВладЛеонтьев
    @ВладЛеонтьев 5 лет назад +3

    вот такие уроки важны! просто без заморочек, полное понимание зато!!!!

    • @ivan-_-8577
      @ivan-_-8577 4 года назад +2

      На понимание по такому уроку не надейся, дружище.

  • @mounreal
    @mounreal 2 года назад

    музычка топ (инфа тоже, само собой)

  • @ДженниБлэйд
    @ДженниБлэйд 5 лет назад +3

    Во как раз это искал❤ спасибо!!! Еле нашел!

  • @ВладЛеонтьев
    @ВладЛеонтьев 5 лет назад +1

    Наконец то долгожданный ролик!!!!!

  • @ivan-_-8577
    @ivan-_-8577 4 года назад +13

    «Перекинуть с одного в другой. Каст в переводе - бросать» Ох, ребята. Он вас научит тут. Глубине понимания вопроса, так сказать.

    • @ivan-_-8577
      @ivan-_-8577 Год назад +2

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

    • @ivan-_-8577
      @ivan-_-8577 Год назад

      @@Beatrixxxomg Простите, тип чего? Каста?

    • @Dyk-07
      @Dyk-07 11 месяцев назад

      ​@@ivan-_-8577 Все говорят что касты это зло, лично я верю но не встречал гайдов как обойтись без кастов. Может быть вам поподались такие гайды?

    • @ivan-_-8577
      @ivan-_-8577 11 месяцев назад +1

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

  • @ruslanartemyev4788
    @ruslanartemyev4788 4 года назад +1

    Ты святой человек. Спасибо тебе.

  • @panorama7251
    @panorama7251 4 года назад +12

    Конкретно данный урок принципиально неточен. Получать ВСЕ объекты подобного класса - плохо. "Не обращайте на это внимание" тоже плохо, это собственно информация, которая кое о чем говорит. В свое время очень сильно запутался и все бросил из-за таких советов.

  • @vadispi
    @vadispi 2 года назад

    Спасибо тебе, ОГРОМЕНЕЙШОЕ! Целый день сегодня убил чтобы реализовать это. Спасибо большое что доходчиво объяснил)

  • @SilverMLP
    @SilverMLP Год назад

    в 2023 актуально! Спасибо!

  • @RPAXGAMING
    @RPAXGAMING 4 года назад +2

    То что надо было) спасибо

  • @716BaZa
    @716BaZa Год назад

    Можно больше разных примеров? Это очень важно для понимания

  • @superlexadnepr
    @superlexadnepr Год назад

    Спасибо!

  • @voinsveta221
    @voinsveta221 5 лет назад +2

    ОО Спасибо!!

  • @drake3138
    @drake3138 Год назад

    Лучший

  • @andreylebedev7614
    @andreylebedev7614 5 лет назад +1

    Заебись,Саша,все заебись!

  • @АндрейТ-г7б
    @АндрейТ-г7б 5 лет назад +2

    Огромное спасибо! Лучший урок по теме Cast to.

  • @Leniv_i_Bezdaren
    @Leniv_i_Bezdaren 2 года назад

    Спасибо

  • @Alexey_Pe
    @Alexey_Pe 3 года назад +1

    Мне понравилось, особенно на 10:53, после 11:36 сразу свернул видео и пошёл самостоятельно делать. Не уверен правильно ли сделал, но мне не важно, просто хотел что то сделать сам, а о качестве подумаю через несколько месяцев) В итоге сделал всё иначе, но мне всё равно понравилось, главное что оно работает)
    Вот что я сделал:
    1. При старте BP2 записывает свои размеры в переменную (BP2_Vector).
    2. При старте BP1 берёт размеры BP2 из переменной BP2_Vector.
    3. При соприкосновении с коллизией BP1 изменяет BP2_Vector.
    4. В BP2, в event Tick происходит изменение размеров на BP2_Vector.
    Вот тут скриншоты как я это сделал и итог imgur.com/a/H237qDI
    Получилось совсем немного, хотя мне это было не важно, ещё есть ноды print string которые занимают место, но это тоже не важно, я хотел что бы они были.
    Единственное, я не понял как мне сделать так, что бы когда я отходил от BP1, BP2 уменьшался. Я хотел сделать if, но он принимает только bool перменные, а у узла on component hit нету bool выхода, поэтому я так и не понял как мне это сделать

    • @Lucerbius
      @Lucerbius 3 года назад

      Не знаешь как из BP передать переменную в Anim BP?
      Смысл в том, чтобы нажав кнопку на клавиатуре, бот получил эту команду (и он вывел на экран Print String).
      (то что в видео с Anim BP не работает)

  • @hirtiy_lisenok
    @hirtiy_lisenok 2 года назад

    Спасибо огромное

  • @medvedercheg
    @medvedercheg 3 года назад

    Огромное спасибо!

  • @maxreliz2889
    @maxreliz2889 4 года назад +11

    Лучше бы рассказал в каких случаях это применяется. А то кто ни будь будет вте делать через касты. Для передачи инфы есть BP interface. А этот способ только для записи переменных при старте и ни как больше. Оптимизация братан. А про Tick вообще стоит забыть и использовать только в крайнем случае или для теста логикию

    • @eddit1086
      @eddit1086 3 года назад

      Вопрос новичка : интересно почему никто не задает вопрос о том что Гет Актор Оф Касс работает без Каста...или я один это заметил?

    • @АлексейПарфёнов-ь9з
      @АлексейПарфёнов-ь9з 3 года назад +1

      @@eddit1086 потому что каст - это приведение к классу, т.е полиморфизм. Взять эктора по классу же является точным жестким указанием конкретного эктора

    • @KadykovDenis
      @KadykovDenis Год назад

      наконец то нормальный комментарий. А можешь обяснить как сделать на Блюпринтах что то похожее на Синглтон?

    • @doctor_livsi_pod_phonk
      @doctor_livsi_pod_phonk Год назад +1

      Брат, это я все знаю, а че везде так надо интерфейсами? Даже в компоненте задачи для дерева тоже нужно интерфейсом в игрока например?

    • @doctor_livsi_pod_phonk
      @doctor_livsi_pod_phonk Год назад

      ​@@АлексейПарфёнов-ь9зполиморфизм это переопределение одинакового метода в классах наследниках.

  • @ivanbeany
    @ivanbeany 4 года назад +1

    Спасибо. Тема не раскрыта полностью, но для начального уровня вполне себе хорошее описание применения.

  • @Lucerbius
    @Lucerbius 3 года назад

    Благодарю за урок. Теперь понятно, как передать команду боту через нажатие кнопки на клавиатуре. Только как выполнить анимацию ботом при появлении команды пока не понятно. AnimBP так не подключить.

    • @camelot6239
      @camelot6239 3 года назад +1

      Anim bp подключается через set anim instanse class и в target подключается меш которому нужно изменить аним бп или подключить аним бп если не подключен

  • @ИванИванов-н9т9ъ
    @ИванИванов-н9т9ъ 2 года назад +1

    Если бы не дер..мовая громкая музыка, то была бы отличная подача материала.
    Но все равно спасибо за видео.

  • @leshalozhkin
    @leshalozhkin 2 года назад

    Блинаааа, чувааак, спасибо! Я звукач и вот эти все дела столько времени занимают с программированием. Но благодаря таким, как ты, можно жить))
    Вопрос, а как такие связки влияют на производительность? И вообще мне кажется, через день я забуду, что тут наворотил)) Как работать так, чтобы не запутываться во всех этих связях?

  • @MosheDayan-v5f
    @MosheDayan-v5f 5 месяцев назад

    6:57 Мы можем соединить ноду Get и Set? Я попробовал, работает так же

  • @тимурдубровин-н7и
    @тимурдубровин-н7и 3 года назад +1

    Как передать данные, если первый блупринт ещё не заспавнился, а вот после его спавна, данные его переменных должны передаваться в другой блупринт!?

  • @mike1pmov
    @mike1pmov 2 года назад

    Cast это конечно же бросать, но не в программировании. Собственно и в UE это не "бросать". Cast здесь в смысле слова Casting, т.е. определение роли. А именно мы не знаем например какого класса объект столкнется с нашим объектом, но попытаемся его кастовать и при удаче получить доступ к его свойствам и методам, при неудаче значит это объект другого класса.

    • @doctor_livsi_pod_phonk
      @doctor_livsi_pod_phonk Год назад

      Неправда. Узнаем или этот объект или находится в цепочке наследования

  • @volniy-hleb
    @volniy-hleb 2 года назад

    Почему когда создаем Cast на блупринт еще нужно в объекте указывать блупринт. Глупость. У меня например блупринты менюшек и как мне теперь кастовать между ними?

  • @ZhenyaBruss
    @ZhenyaBruss 11 месяцев назад

    Не очень понял, почему мы дважды ссылаемся на другой обьект. Первый раз когда создаем ноду "каст ту (название объекта)", а потом еще и создаем переменную с ссылкой на этот обьект. В чем прикол?

  • @gadji2011
    @gadji2011 Год назад +1

    3:21.Переменная war1? Он заранее знал, что начнётся война и пытался нас предупредить? А весь канал учит работе с анриалом, чтоб мы могли работать программистами в иммиграции … все сходится!

  • @alexwayne7891
    @alexwayne7891 Год назад

    А как сделать каст из контроллера в BT task?

  • @sergeydudkin92
    @sergeydudkin92 3 года назад

    Наконец то я нашёл урок, где нормально показано как создать переменную actor, активировать её и записать в неё сам блюпринт, на который ссылаешься.
    P.S но появилась другая проблема, мне нужно вкл и выкл множество светильников на сцене, а actor'у можно присвоить только один блюпринт объект на сцене, как их все сгруппировать и каст шёл сразу на множество одинаковых объектов?

  • @Валидус
    @Валидус Год назад +1

    Все вы туториалщики делаете одно и тоже, создаёте BP и вытаскиваете их на сцену, что бы с них ссылки получить, а что делать если два файла BP не на сцене, и между ними надо информацию передать через Cast To, вы либо сами не знаете, либо просто не хотите объяснить.

  • @akillus83
    @akillus83 3 года назад

    А что если нужно не вызывать переменную, а давать команду на исполнение всей логики. Например: BP1 - камера видеонаблюдения которая при помощи Pawn Sense мониторит территорию. BP2 - это противник который при помощи Pawn Sense всегда видит игрока. В моем случае BP2 сразу начинает атаковать т.к. начинает с Event Tick или Begin Play. Как сделать так, чтобы при попадании игрока в поле зрения BP1, с BP1 подавалась команда на BP2 на исполнение атакующей логики??? Подскажите кто шарит. Или скиньте ссылку на такой урок плиз. Буду весьма благодарен!!!

  • @peoplegame5988
    @peoplegame5988 Год назад

    А как сделать тоже самое но только с UI

  • @alexeyxopyc2471
    @alexeyxopyc2471 18 дней назад

    я вот сколько не смотрю разные видео все понять немогу как этот каст использовать и зачем...
    я сам новичек - поправьте меня, если не правильно понял или неправильно изложил мысль:
    1)в примере, который показан на 3:30 можно прямо из переменной bp2 var вытягивать все нужные значения, не делая каст, потому что возвращается из каста тоже самое что и подключается к пину Object... вот допустим если бы оба актора BP1 и BP2 наследовались от родителя, например от BP_ACTORS_WITH_INTERACTIONS_BASE, и кастуя на этот родительский класс, тем самым осуществляя проверку наследуется ли то, что подключено к пину Object от кастуемого класса... но вроде даже в этом случае можно обойтисьболее простыми и понятными инструментами
    2) как я понял обмены данными между bp можно осуществлять и с помощью Интерфейсов и с помощью Кастомных Ивентов( вызов такого ивента будет доступен в любом блюпринте, но там нужно будет извернуться с "таргетом" в вызове ивента, например запросив get actor of class, или как показал автор видео сохранить заранее в переменную нужного актора). и отсюда вопрос - а не лучше ли использовать их?)

  • @eddit1086
    @eddit1086 3 года назад +1

    Гет Актор Оф Класс работает и без Каста... Зачем тогда нужен Каст в этой схеме ????

  • @SerhiiPechenin-z4t
    @SerhiiPechenin-z4t 3 года назад +3

    музыкальный - нафига оно тут нужно? и, во-вторых, музыка должна быть раза в 3 тише голоса. просто не возможно смотреть ролик

    • @cyberstars-5839
      @cyberstars-5839  3 года назад +1

      согласен, ролик старый - раньше монтировал без наушников

  • @DARKKING-gu8ki
    @DARKKING-gu8ki 4 года назад +1

    круто но музыка громкая

    • @cyberstars-5839
      @cyberstars-5839  4 года назад

      уже учел) в новых роликах еле слышно

    • @eddit1086
      @eddit1086 3 года назад

      @@cyberstars-5839 в новой творческой студии это вроде как можно исправить в любой момент.

  • @ВладЛеонтьев
    @ВладЛеонтьев 5 лет назад +1

    классная музыка!

  • @АлексНеВажно-х4г
    @АлексНеВажно-х4г 2 года назад

    А если этого блюпринта нет на карте ???? А если потом спавнится ? Посмотрел много видео и везде показывают то что на карте

    • @cyberstars-5839
      @cyberstars-5839  2 года назад

      Тогда можно взять переменную и запихать в нее ссылку

    • @АлексНеВажно-х4г
      @АлексНеВажно-х4г 2 года назад

      @@cyberstars-5839 в том то и дело, что часто вылазит ошибки "невозможно прочитать" Думаешь сделать каст, на блюпринт, которого нет на карте, делаешь переменную, указываешь в ней ссылку на этот каст который тебе нужен,. но там нужно указать то что на карте...Или допустим мне нужно сделать каст на контроллер, что подключать в таргет? Сколько видео не смотрел подобных ответов не находил.

  • @Иван-щ8н
    @Иван-щ8н 3 года назад +4

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

    • @cyberstars-5839
      @cyberstars-5839  3 года назад

      Пожалуйста уточните не верные моменты

    • @Иван-щ8н
      @Иван-щ8н 3 года назад +13

      @@cyberstars-5839 Вы говорите: "cast позволяет осуществить передачу данных между 2-му блупринтами. Cast в переводе с англ. - бросать. cast это связующий мост между 2-мя блупринтами"
      Это не так, назначение cast это приведение типов. Ни больше, ни меньше и к передачи данных не имеет ни какого отношения. В данном случае
      правильный перевод с английского будет "в ролях". Cast ни в коем случае не мост и ни каким образом блупринты не связывает. Что делает каст? Если грубо, то он получает адресс в памяти и пытается интерпретировать эту область памяти в соответствие с тем типом данных, которые вы ожидаете там увидеть. Далее, Вы говорите, что нельзя создать переменную-ссылку на класс BP_2, это не так, ещё как можно, более того, так и нужно было сделать и тогда cast был бы не нужен). Далее, использование getallactorsofclass это пример плохой архитектуры игры, стоило сказать что использовать его нужно только тогда, когда иначе ну никак, вместо этого Вы используете этот метод как единственно возможный для получения ссылок на объект в real-time. Кроме того,
      cast в Вашем примере с getallactorsofclass не нужен, нет смысла приводить массив объектов BP_2 к типу BP_2. И последний Ваш пример с onComponentHit. Вот это мог бы быть хороший пример где cast нужен(например если бы Вы использовали пин otherActor), но Вы и в этом примере используете getallactorsofclass, который возвращает массив объектов BP_2 и приводите их к типу BP_2.

    • @eddit1086
      @eddit1086 3 года назад +1

      @@Иван-щ8н Вот это поворот...) А то все комментарии завалены похвалами от таких же как и я начинающих. Не подскажете кто на ЮТ может преподносить информацию более подробно и профессионально??

    • @Иван-щ8н
      @Иван-щ8н 3 года назад +1

      @@eddit1086 Я не знаю безусловных авторитетных источников. Везде информация подаётся фрагментарно. Даже в мануалах от самих эпиков. Любой результат можно достичь многими разными способами. На этом канале также полно полезной информации, надо только правильно относиться к тому что смотришь. Обучение чему-то это постоянный сбор пазла. Unreal Engine Rus хороший канал был.

    • @ManifestM
      @ManifestM 2 года назад +1

      @@Иван-щ8н всё верно сказано. Результата можно достигнуть разными способами,но важнее достигать их правильными,чтобы потом не получить неожиданный exception. Максимально правильно были подмечены ошибки в данном видео

  • @ИьйютьийюпьЙьиютьийюубов

    А если BP1 - это мод, а BP2 - виджет, и их ведь на сцену не установишь, то как их связать?

  • @hirtiy_lisenok
    @hirtiy_lisenok 2 года назад

    Возникла проблемма, у меня нет вкладки Default

    • @cyberstars-5839
      @cyberstars-5839  2 года назад +1

      Сверху window там все окна

  • @MAKSPC-yb2ou
    @MAKSPC-yb2ou 4 года назад +1

    буде урок як зробити шутер ???

  • @gameanimation9011
    @gameanimation9011 8 месяцев назад

    Люди а как сделать каст level blue print ну например у меня голод написан в level bp и мне нужно что бы еда получила переменную еды и прибавила к ней 10

    • @cyberstars-5839
      @cyberstars-5839  8 месяцев назад +1

      Левел блупринт для этого лучше не брать. Можно это делать в отдельном компоненте перса

    • @gameanimation9011
      @gameanimation9011 8 месяцев назад

      @@cyberstars-5839 хорошо

    • @gameanimation9011
      @gameanimation9011 8 месяцев назад

      ​@@cyberstars-5839аааа что делать я весь код из левел БП закинул в БП еды и почему-то у меня багнулся delay и еда уходит за мили секунду

  • @joeelusive1661
    @joeelusive1661 Год назад

    Нестор? Ты ли это?

  • @DayzeXzxR
    @DayzeXzxR 2 года назад +1

    грузит музыка, мешает

  • @voinsveta221
    @voinsveta221 5 лет назад +1

    информацию на ютубе по этой теме не найдешь

    • @arti8209
      @arti8209 5 лет назад

      ruclips.net/video/szNdM0vo2PI/видео.html

    • @Kitsikoo
      @Kitsikoo 4 года назад

      а где найдёшь?

    • @voinsveta221
      @voinsveta221 4 года назад

      @@Kitsikoo здесь

  • @xsoniqchannel
    @xsoniqchannel 4 года назад

    с виджетами не прокатит, их нельзя вытащить на сцену

    • @cyberstars-5839
      @cyberstars-5839  4 года назад +1

      Нод - Get All Widgets Of Class, в нём выбираете свой виджет,
      Из его выхода нод get и индекс 0
      и вы получаете ссылку на любой виджет

    • @xsoniq344
      @xsoniq344 4 года назад +1

      @@cyberstars-5839 спасибо, а как получить данные в виджет с левел блюпринта?

  • @MuLLeR029
    @MuLLeR029 Год назад +1

    Без примеров не очень эффективный обучающий ролик. Пример с 2 сферами некорректный т.к не отражает действительность, а является чем-то абстрактным. К чему данную информацию подвязывать непонятно. А видео судя по всему относиться к новичкам т.к они смотрят чтобы научиться. А если нет, то непонятно вообще для кого данные видосы.

    • @MuLLeR029
      @MuLLeR029 Год назад

      Складывается ощущение, что данные видосы скорее для тех, кто уже в теме, кому просто нужны дополнительные инструменты.

  • @nodfix2639
    @nodfix2639 4 года назад +4

    Автор не понимает приципы программирования ( видно тут и на уроке по интерфейсам ( а жаль... Толкового контента не хватат(

    • @cyberstars-5839
      @cyberstars-5839  4 года назад +4

      Интересно, что за принципы программирования которые я не понимаю

    • @Anna-uh1sp
      @Anna-uh1sp 4 года назад +3

      Многим ребятам, включая меня, этот урок помог, как и другие ролики данного автора. Вероятно, проблемы с пониманием как раз таки у тебя, т.к. вряд ли ты тут "самый умный в комнате".

    • @nodfix2639
      @nodfix2639 4 года назад +12

      @@cyberstars-5839 Извините, не хотел обидеть, контент у вас полезный для кого-то не спорю... Но...
      1. cast это не "бросать", а castTo - это приведение к
      2. зачем в вашем примере делать каст если мы итак через GetAllActors получили уже bp2 actor?
      3. cast и interface это прежде всего про наследование и полиморфизм
      4. В примере с интерфейсами вы получили 0ой объект после GetAllAcxtos, а списали это на последовательное и параллельное выполнение, а то что вы добавили цикл - это последовательно для всех вызов метода (никакого параллелизма)... не стыковка тут(да и в каком-то виде введение в заблуждение).
      И вообще у того же Unreal Engine Rus более правильный подход к уроку по интерфейсам там хоть в каком-то виде про полиморфизм, а то что делали вы - лучше делать через Event Dispatcher (независимо от того используются ли интерфейсы), на случай если таких объектов будет очень много. А по CastTo лучше бы был пример где мы после GetAllActors(разных типов с разным функционалом) приводим каждый к нужному и вызываем их уникальные функции, например.

    • @nodfix2639
      @nodfix2639 4 года назад +2

      @@Anna-uh1sp Я рад что урок вам помог, и не сомневаюсь что он полезен для многих, и все чему-то научились, но есть более правильные способы сделать то что было у автора в примере, и тут не совсем уместное использование функционала (микроскопом тоже можно гвозди забивать).
      docs.unrealengine.com/en-US/Engine/Blueprints/UserGuide/CastNodes/index.html
      docs.unrealengine.com/en-US/Engine/Blueprints/UserGuide/Types/Interface/UsingInterfaces/index.html
      Вот тут в первых абзацах куда более правильное описание зачем нужны castTo и Interfaces (если с англ плохо, то гугл переводит норм)

    • @Anna-uh1sp
      @Anna-uh1sp 4 года назад +1

      @@nodfix2639 Чем ваша статья кардинально отличается от ролика? Там много текста, а смысл простой - есть возможность получить связь с данными другого класса и работать с ними как хочешь. Зачем усложнять понимание?

  • @AndriiTurchynRieltorDnipro
    @AndriiTurchynRieltorDnipro Год назад +1

    спасибо

  • @kirillmalchenko4453
    @kirillmalchenko4453 2 года назад

    Большое спасибо