#unreal-engine4
#unreal-engineer4
Вопрос:
Я новичок в разработке игр. Пройдите обучающий курс, чтобы начать (https://docs.unrealengine.com/latest/INT/Programming/QuickStart/7/index.html ) Я создал класс AMyActorTest extended AActor:
#include "TestUProject.h"
#include "MyActorTest.h"
AMyActorTest::AMyActorTest(const class FPostConstructInitializePropertiesamp; PCIP)
: Super(PCIP)
{
MyNumber = 12;
}
void AMyActorTest::BeginPlay()
{
Super::BeginPlay();
if (GEngine)
{
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Yellow, TEXT("Hello World!"));
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Yellow, FString::FromInt(MyNumber));
}
}
У меня проблема в том, что я не могу переместить в редакторе в AActor после размещения его в окне просмотра. Я читал, что мне не хватало RootComponent для моего актера, но я не понимаю, как его добавить (возможно, я не до конца понимаю актеров). Могу ли я помочь вам с моим исходным кодом для решения моей проблемы? Этот код выполняется с точки зрения обучения.
Моя цель — добавить актера и иметь возможность перемещать и поворачивать его.
Ответ №1:
Пожалуйста, добавьте этот код
RootComponent = PCIP.CreateDefaultSubobject<USceneComponent>(this, TEXT("Root"));
в ваш конструктор. Вот и все. Если вы хотите добавить другие компоненты, вы можете использовать аналогичный код (в этом примере создается UInstancedStaticMeshComponent :
UInstancedStaticMeshComponent* instancedComp = PCIP.CreateDefaultSubobject<UInstancedStaticMeshComponent>(RootComponent, TEXT("SubMeshInstanced"));
instancedComp->AttachTo(RootComponent); // this is important!
// this part is specific to this component
// (although all are common to other types of your Root subitems)
instancedComp->SetStaticMesh(mesh);
instancedComp->SetMaterial(0, material);
instancedComp->bOwnerNoSee = false;
instancedComp->bCastDynamicShadow = false;
instancedComp->CastShadow = false;
instancedComp->SetHiddenInGame(false);
instancedComp->SetMobility(EComponentMobility::Static);