UE4 setting sprite by using C++

Viewed 852

I didn't figure out how can i set a sprite in actor class constructor by using its reference. Reference is "PaperSprite'/Game/cc/combat/units/archer_Sprite_0.archer_Sprite_0'"

I want to make this sprite static. I think should use ConstructorHelpers::FObjectFinder . When i run the code below, i got this error:

sprite = CreateDefaultSubobject<UPaperSpriteComponent>(TEXT("Sprite_comp"));
sprite->SetupAttachment(RootComponent);

ConstructorHelpers::FObjectFinder<UPaperSprite> SpriteAssetObj(TEXT("PaperSprite'/Game/cc/combat/units/archer_Sprite_0.archer_Sprite_0'"));

//sprite->SetSprite(SpriteAssetObj.Object);

"Severity Code Description Project File Line Suppression State Error C2664 'void ConstructorHelpers::ValidateObject(UObject *,const FString &,const TCHAR *)': cannot convert argument 1 from 'T *' to 'UObject *' MyProject C:\Program Files\Epic Games\UE_4.26\Engine\Source\Runtime\CoreUObject\Public\UObject\ConstructorHelpers.h 110 "

Any help or advice would be nice. Thanks in advance.

1 Answers

I want to make this sprite static.

ConstructorHelpers::FObjectFinder is for finding an asset.

In case of movement would be:

sprite->SetMobility(EComponentMobility::Type::Stationary);

I tested the code below without any problem. Are you sure ConstructorHelpers::FObjectFinder... is causing the error?

static ConstructorHelpers::FObjectFinder<UPaperSprite> SpriteAssetObj(TEXT("PaperSprite'/Game/TEMP/Sprites/SP_TempSprite_1.SP_TempSprite_1'"));
if (SpriteAssetObj.Object)
{
    UE_LOG(LogTemp, Warning, TEXT("PaperSprite loaded"));
}
else
{
    UE_LOG(LogTemp, Warning, TEXT("PaperSprite not found"));
}

Don't forget to add Paper2D module to your YourGame.build.cs file:

PublicDependencyModuleNames.AddRange(new string[] { "Paper2D" });

And add to your file:

#include "PaperSprite.h"
Related