.h
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "Components/BillboardComponent.h"
#include "TestA.generated.h"
UCLASS()
class MYPROJECT_API ATestA : public AActor
{
GENERATED_BODY()
public:
// Sets default values for this actor's properties
ATestA(const FObjectInitializer& ObjectInitializer);
protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;
public:
// Called every frame
virtual void Tick(float DeltaTime) override;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
UBillboardComponent* SpriteComponent;
UTexture2D* SpriteTexture;
};
.cpp
// Fill out your copyright notice in the Description page of Project Settings.
#include "TestA.h"
#include "PhysXPublic.h"
#include "PhysXIncludes.h"
// Sets default values
ATestA::ATestA(const FObjectInitializer& ObjectInitializer)
:Super(ObjectInitializer)
{
// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true;
#if WITH_EDITORONLY_DATA
SpriteComponent = ObjectInitializer.CreateEditorOnlyDefaultSubobject<UBillboardComponent>(this, TEXT("Test"));
if (SpriteComponent)
{
SpriteComponent->Sprite = ConstructorHelpers::FObjectFinderOptional<UTexture2D>(TEXT("Texture2D'/Engine/EditorResources/S_Note.S_Note'")).Get(); //这里的路径可以通过在引擎中右键资源 copy reference 获得引用路径
SpriteComponent->SpriteInfo.Category = FName(TEXT("Note"));
SpriteComponent->SpriteInfo.DisplayName = FText::FromString(FString(TEXT("billord")));
SpriteComponent->SetupAttachment(RootComponent);
}
#endif
}
// Called when the game starts or when spawned
void ATestA::BeginPlay()
{
Super::BeginPlay();
}
// Called every frame
void ATestA::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}