Unreal – Как избежать жестко запрограммированного пути при создании объекта в cppC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Unreal – Как избежать жестко запрограммированного пути при создании объекта в cpp

Сообщение Anonymous »

Меня немного беспокоит следующий код:

Код: Выделить всё

ARollingBall::ARollingBall()
{
UStaticMeshComponent* sphere;
sphere = CreateDefaultSubobject(TEXT("ball"));
static ConstructorHelpers::FObjectFinder SphereVisualAsset(TEXT("/Engine/BasicShapes/Sphere"));
sphere->SetupAttachment(RootComponent);
if (SphereVisualAsset.Succeeded()) {
sphere->SetStaticMesh(SphereVisualAsset.Object);
}
}
А именно, я жестко программирую путь. Что, если я решу, что хочу использовать другой объект в будущем? Представьте, что у меня есть несколько пешек, жестко запрограммированных на использование этого актива. В cpp нет простого способа изменить все эти ссылки. Мне пришла в голову блестящая идея представить выбранную мной сетку в чертежах, чтобы использовать обработку ссылок Unreal следующим образом:

Код: Выделить всё

UPROPERTY(EditDefaultsOnly, Category = "References")
UStaticMesh * m_staticMesh;
Однако следующее не создает сетку, когда я наследую этот класс с помощью схемы и устанавливаю сетку по умолчанию (m_staticMesh):

Код: Выделить всё

ARollingBall::ARollingBall()
{
UStaticMeshComponent* sphere;
sphere = CreateDefaultSubobject(TEXT("ball"));
sphere->SetupAttachment(RootComponent);
if (m_staticMesh) {
sphere->SetStaticMesh(m_staticMesh);
}
}
Я использую Unreal 4.21.2, оба метода компилируются, но последний не работает.
Любые предложения о том, как реализовать вышеуказанную функцию должным образом оценены. Если вы знаете лучший способ избежать жесткого кодирования, дайте мне знать.

Подробнее здесь: https://stackoverflow.com/questions/665 ... ect-in-cpp
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»