UE4 在c++中添加BiliboardComponent并设置引擎默认图片

.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);

}

发布了144 篇原创文章 · 获赞 15 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/maxiaosheng521/article/details/97934822