Подводные камни прямых ссылок в Unreal Engine

Поділитися
Вставка
  • Опубліковано 1 січ 2025

КОМЕНТАРІ • 12

  • @multiupgame
    @multiupgame 5 місяців тому

    Топ, просто топ туториал 💪💪💪

  • @SinhroZ
    @SinhroZ 7 місяців тому

    И еще вопрос, возможно не совсем по теме видео.. Предположим, что персонаж может одевать шляпу, но в начале игры шляпы у него нет: я создаю SoftReference на объект предполагаемой шляпы. Затем, персонаж подбирает шляпу, и чтобы меш шляпы не отображался, вызывается метод для скрытия меша этой шляпы.. Но метод принимает только обычный Reference и не принимает на вход SoftReference. То есть, для вызова метода нужно будет впоследствии переводить из SoftReference в прямую ссылку?

    • @natatem0080
      @natatem0080  7 місяців тому +2

      У данной задачи есть множество решений
      И не все они требуют Soft Reference
      Думаю, я сниму урок про Soft Reference, чтоб было понятнее, когда их использовать

  • @SinhroZ
    @SinhroZ 7 місяців тому

    У меня вопрос: в начале видео сказано, что написанные в коде компоненты являются прямыми ссылками, а позднее, рекомендуется использовать (уже в Blueprint) Soft Refference. Как тоже самое сделать в коде C++? ..Если возможно)

    • @natatem0080
      @natatem0080  7 місяців тому +1

      Привет
      Не нужно всегда использовать Soft Refference. Они нужны, чтобы подгружать объекты не сразу, а по мере использования.
      Если объект будет использоваться сразу - то в прямых ссылках нет проблемы.
      В С++ используется:
      TSoftObjectPtr
      TSoftClassPtr

    • @TimDogger
      @TimDogger 7 місяців тому +1

      Софт ссылки нужны когда:
      1) На уровне связать 2 объекта. К примеру есть триггер BP_Trigger который при активации открывает дверь BP_Door. В триггере делаете софт ссылку на дверь
      2) Иконки в инвентаре. В играх, наверное (дота к примеру), замечали, что когда открываешь какой то предмет инвентаря, то он отображается не сразу, а подгружается. Представьте если бы в той же доте или кс все скины хранились бы в памяти сразу)).
      Софт ссылки не нужны когда:
      1) Есть оружие и оно при стрельбе должно моментально проиграть звук и запустить FX. Если они будут через софт и не будут в момент выстрела в памяти, то они начнут подгружаться, а это займет время. В итоге звук выстрела у вас может произойти с задержкой.
      2) Если есть какой то массивный класс, на который ссылаются другие классы. Например, класс главного персонажа игрока. На него могут ссылаться PlayerController, CameraManager, HUD и т.д. В персонаже обычно куча компонентов, меши, и т.д. Пример, конечно, не очень, т.к. при работе с игровым персонажем можно сделать исключение, но все же.
      Также чтобы избежать этого можно юзать интерфейсы (не те что UI, а интерфейс в программировании). По этому лучше почитать про сами интерфейсы и про принцип SOLID (Interface segregation принцип).

  • @someone38311
    @someone38311 6 місяців тому

    Теперь я понял почему все не любят cast.
    Но у меня возник вопрос: если я создам переменную с прямой ссылкой на Blueprint актор, то вызов cast сильно не повлияет на использование памяти компьютера, так как актор уже будет загружен в память благодаря этой прямой ссылке. Или всё-таки есть еще какие-то причины, по которым cast можно не любить?
    И спасибо за урок!) Узнал много нового.

    • @natatem0080
      @natatem0080  6 місяців тому +1

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

    • @someone38311
      @someone38311 6 місяців тому +1

      @@natatem0080 Понял! Еще раз спасибо!

  • @Котвбезумнойшляпе
    @Котвбезумнойшляпе 7 місяців тому +1

    Супер))

  • @DodgerEcho
    @DodgerEcho 7 місяців тому +1

    Интересно кто из разработчиков игра AAAAAA... класса об этом задумывается...😁

  • @HSDivinityBeats
    @HSDivinityBeats 7 місяців тому

    хех)