И еще вопрос, возможно не совсем по теме видео.. Предположим, что персонаж может одевать шляпу, но в начале игры шляпы у него нет: я создаю SoftReference на объект предполагаемой шляпы. Затем, персонаж подбирает шляпу, и чтобы меш шляпы не отображался, вызывается метод для скрытия меша этой шляпы.. Но метод принимает только обычный Reference и не принимает на вход SoftReference. То есть, для вызова метода нужно будет впоследствии переводить из SoftReference в прямую ссылку?
У данной задачи есть множество решений И не все они требуют Soft Reference Думаю, я сниму урок про Soft Reference, чтоб было понятнее, когда их использовать
У меня вопрос: в начале видео сказано, что написанные в коде компоненты являются прямыми ссылками, а позднее, рекомендуется использовать (уже в Blueprint) Soft Refference. Как тоже самое сделать в коде C++? ..Если возможно)
Привет Не нужно всегда использовать Soft Refference. Они нужны, чтобы подгружать объекты не сразу, а по мере использования. Если объект будет использоваться сразу - то в прямых ссылках нет проблемы. В С++ используется: TSoftObjectPtr TSoftClassPtr
Софт ссылки нужны когда: 1) На уровне связать 2 объекта. К примеру есть триггер BP_Trigger который при активации открывает дверь BP_Door. В триггере делаете софт ссылку на дверь 2) Иконки в инвентаре. В играх, наверное (дота к примеру), замечали, что когда открываешь какой то предмет инвентаря, то он отображается не сразу, а подгружается. Представьте если бы в той же доте или кс все скины хранились бы в памяти сразу)). Софт ссылки не нужны когда: 1) Есть оружие и оно при стрельбе должно моментально проиграть звук и запустить FX. Если они будут через софт и не будут в момент выстрела в памяти, то они начнут подгружаться, а это займет время. В итоге звук выстрела у вас может произойти с задержкой. 2) Если есть какой то массивный класс, на который ссылаются другие классы. Например, класс главного персонажа игрока. На него могут ссылаться PlayerController, CameraManager, HUD и т.д. В персонаже обычно куча компонентов, меши, и т.д. Пример, конечно, не очень, т.к. при работе с игровым персонажем можно сделать исключение, но все же. Также чтобы избежать этого можно юзать интерфейсы (не те что UI, а интерфейс в программировании). По этому лучше почитать про сами интерфейсы и про принцип SOLID (Interface segregation принцип).
Теперь я понял почему все не любят cast. Но у меня возник вопрос: если я создам переменную с прямой ссылкой на Blueprint актор, то вызов cast сильно не повлияет на использование памяти компьютера, так как актор уже будет загружен в память благодаря этой прямой ссылке. Или всё-таки есть еще какие-то причины, по которым cast можно не любить? И спасибо за урок!) Узнал много нового.
Привет Cast нормальная вещь и от него в любом случае не уйдёшь В твоём случае ты прав Но нужно ещё помнить, что Cast внутри себя вызывает цикл, который итерирует по классам иерархии проверяя принадлежность Поэтому его лучше часто не использовать Особенно в тике
Топ, просто топ туториал 💪💪💪
И еще вопрос, возможно не совсем по теме видео.. Предположим, что персонаж может одевать шляпу, но в начале игры шляпы у него нет: я создаю SoftReference на объект предполагаемой шляпы. Затем, персонаж подбирает шляпу, и чтобы меш шляпы не отображался, вызывается метод для скрытия меша этой шляпы.. Но метод принимает только обычный Reference и не принимает на вход SoftReference. То есть, для вызова метода нужно будет впоследствии переводить из SoftReference в прямую ссылку?
У данной задачи есть множество решений
И не все они требуют Soft Reference
Думаю, я сниму урок про Soft Reference, чтоб было понятнее, когда их использовать
У меня вопрос: в начале видео сказано, что написанные в коде компоненты являются прямыми ссылками, а позднее, рекомендуется использовать (уже в Blueprint) Soft Refference. Как тоже самое сделать в коде C++? ..Если возможно)
Привет
Не нужно всегда использовать Soft Refference. Они нужны, чтобы подгружать объекты не сразу, а по мере использования.
Если объект будет использоваться сразу - то в прямых ссылках нет проблемы.
В С++ используется:
TSoftObjectPtr
TSoftClassPtr
Софт ссылки нужны когда:
1) На уровне связать 2 объекта. К примеру есть триггер BP_Trigger который при активации открывает дверь BP_Door. В триггере делаете софт ссылку на дверь
2) Иконки в инвентаре. В играх, наверное (дота к примеру), замечали, что когда открываешь какой то предмет инвентаря, то он отображается не сразу, а подгружается. Представьте если бы в той же доте или кс все скины хранились бы в памяти сразу)).
Софт ссылки не нужны когда:
1) Есть оружие и оно при стрельбе должно моментально проиграть звук и запустить FX. Если они будут через софт и не будут в момент выстрела в памяти, то они начнут подгружаться, а это займет время. В итоге звук выстрела у вас может произойти с задержкой.
2) Если есть какой то массивный класс, на который ссылаются другие классы. Например, класс главного персонажа игрока. На него могут ссылаться PlayerController, CameraManager, HUD и т.д. В персонаже обычно куча компонентов, меши, и т.д. Пример, конечно, не очень, т.к. при работе с игровым персонажем можно сделать исключение, но все же.
Также чтобы избежать этого можно юзать интерфейсы (не те что UI, а интерфейс в программировании). По этому лучше почитать про сами интерфейсы и про принцип SOLID (Interface segregation принцип).
Теперь я понял почему все не любят cast.
Но у меня возник вопрос: если я создам переменную с прямой ссылкой на Blueprint актор, то вызов cast сильно не повлияет на использование памяти компьютера, так как актор уже будет загружен в память благодаря этой прямой ссылке. Или всё-таки есть еще какие-то причины, по которым cast можно не любить?
И спасибо за урок!) Узнал много нового.
Привет
Cast нормальная вещь и от него в любом случае не уйдёшь
В твоём случае ты прав
Но нужно ещё помнить, что Cast внутри себя вызывает цикл, который итерирует по классам иерархии проверяя принадлежность
Поэтому его лучше часто не использовать
Особенно в тике
@@natatem0080 Понял! Еще раз спасибо!
Супер))
Интересно кто из разработчиков игра AAAAAA... класса об этом задумывается...😁
хех)