Pull to refresh

Comments 3

Мне кажется, подобные гайды было бы очень полезно сопровождать примером проекта, в котором было бы показано практическое применение того, что написано выше.

void InitializeComponent();

И далее если метод переопределяется то должен быть либо virtual либо что предпочтительнее override

В данной статье в основном затронем программирование на C++, т.к. полноценное программирование в Unreal Engine 4 возможно именно на этом языке.

Можно создавать игры без использования С++, BP тоже полноценное программирование.

чтобы переопределить их поведение в стандартных методах BeginPlay(), Tick() и EndPlay() и получить пользовательский actor

определенное в методах InitializeComponent() и TickComponent()

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

using namespace Unigine;

Плохая практика выдающая нуба в плюсах.

Все объекты в Unreal Engine 4 наследуются от UObject, доступ к ним возможен при помощи стандартных C++ указателей или умных указателей Unreal Smart Pointer Library.

В движке используется сборщик мусора и поэтому не нужны никакие умные указатели если речь идет об объектах наследуемых от UObject

Типы данных

Помимо своих типов данных в UE можно использовать и стандартные плюсовые типы, странно что в табличке не перечислены типы с фиксированным размером, например uint32_t

Что делает в контейнерах ranged for?

В UE есть еще другие контейнеры, например стэк, очередь и тд.

Вывод в консоль

Не будет работать в UE без предвариательного создания логгера с указанным именем

Доступ к компоненту

Зачем искать компоненты если в полях класса есть ссылки на все компоненты?

В Unreal Engine 4 компонент USceneComponent (или производный) отвечает за действия с трансформацией actor’а.

Не отвечает и только при условии что он есть root актера, но рута может и не быть или им может быть любой другой объект

Поиск Actor

Зачем использовать итераторы в обычном цикле если можно использовать ranged for?

if (SphereCollider != nullptr)

лишняя писанина, можно просто короче

if (SphereCollider)

AKAsset* SpawnedActor1 = (AKAsset*) GetWorld()->SpawnActor(AKAsset::StaticClass(), NAME_None, &Location);

Где проверка на наличие мира (то есть не равенство nullptr)? И зачем использовать небезопасный Си-стайл кастинг?

Unreal Engine 4 позволяет расширять функциональность редактора с помощью Blueprint/Python скриптов.

Ложь. Блюипринты предназначены только для игровой логики и они прилично ограничены. А питон только для автоматизации. Расширять функционал редактора и создавать новые ноды для BP можно только на С++.

Создав скрипт мира

В UE данный скрипт (называется Level BluePrint) популярностью не пользуется, о нем мало кто знает и не рекомендуется его использовать.

UPrimitiveComponent* Trigger;

Обычно принято создавать тип тот же что и у создаваемого объекта, в данном случае USphereComponent

bool bHit = GetWorld()->LineTraceSingle(Hit, Start, End, ECC_Pawn, Params);

Где проверка мира на корректность? И В Чаще используется для рэйкаста LineTraceSingleByChannel

Гуи UE написан на Slate который можно использовать вне игровых проектов. А ваш движок, точнее редактор на сколько знаю написан на Qt, хоть на нем написан весь коммерческий 3д софт, но он тяжелый и неповоротливый.

В UE очень многие пользуются только BP, тех кто использует плюсы в разы меньше, особенно в ру сегменте. Еще в UE очень распространена практика: Класс Движка -> С++ Класс Пользователя -> Blueprint Класс. В С++ классе вся логика, а в BP все что относится к внешнему виду. Причем писать логику можно почти для всего, гуи, ниагара и тд, простыми актерами не ограничивается

Ни слова что в UE в С++ используется сборщик мусора и рефлексия, которая повсеместно используется. Можно было пару слов сказать про UPROPERTY и привести аналог из вашего движка. Я еще думал что в UE много макросов, но судя по именам (заглавными буквами) тут их еще больше, макросы зло.

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

Главный вопрос не "как?", а "зачем?". Этот вопрос был бы актуален и до выхода UE5, а после уже просто смешно

Да и качество статьи оставляет желать лучшего. Нет примера проекта, налицо явное незнание Анриала в целом и плюсов в частности, и тд

Sign up to leave a comment.