В C++ я создал подкласс класса ASLBaseSpriteActor от APaperSpriteActor, чтобы я мог динамически создавать различные «элементы» в мире.
Я пытаюсь динамически настроить, какой конкретный спрайт следует использовать для нового порожденного ASLBaseSpriteActor.
Если я помещу это в конструктор:
Код: Выделить всё
ASLBaseSpriteActor::ASLBaseSpriteActor() {
UE_LOG(LogTemp, Warning, TEXT("ASLBaseSpriteActor::constructor"));
UPaperSprite* sprite = Cast(StaticLoadObject(UPaperSprite::StaticClass(), NULL, TEXT("/Script/Paper2D.PaperSprite'/Game/Assets/Items/apple_Sprite.apple_Sprite'")));
UE_LOG(LogTemp, Warning, TEXT("ASLBaseSpriteActor::Initialize2"));
if (sprite) {
UE_LOG(LogTemp, Warning, TEXT("ASLBaseSpriteActor::Initialize got sptire"));
UPaperSpriteComponent* renderComponent = this->GetRenderComponent();
if (renderComponent) {
this->GetRenderComponent()->SetSprite(sprite);
UE_LOG(LogTemp, Warning, TEXT("ASLBaseSpriteActor::Initialize got render comp"));
}
}
}
Я тоже пробовал отложенный спавн - в игровом режиме делаю:
Код: Выделить всё
void ASLGameModeBase::BeginPlay() {
UWorld* const World = GetWorld();
if (World) {
const FTransform SpawnLocAndRotation;
ASLBaseSpriteActor* newItem = World->SpawnActorDeferred(ASLBaseSpriteActor::StaticClass(), SpawnLocAndRotation);
newItem->Initialize();
newItem->FinishSpawning(SpawnLocAndRotation);
}
}
У меня нет идей, помимо создания подкласса APaperSpriteActor для каждого из моих элементов, чтобы просто установить путь к спрайту в конструкторе. Как я могу добиться того, чего хочу, с помощью всего лишь одного класса APaperSpriteActor, который может динамически прикреплять спрайт к своему экземпляру при его создании в мире на основе параметра пути?
Подробнее здесь: https://stackoverflow.com/questions/786 ... cally-in-c