Unreal Engine 4 C++ 为编辑器中Actor创建自己定义图标

有时候我们创建场景的时候,特定的Actor我们想给它一个特定的图标,便于观察。比方这样:


实现起来也非常easy。须要编写C++代码:

我们创建一个Actor,叫AMyActor。它包括一个Sprite(精灵),这个精灵负责显示自己定义图标:代码例如以下

#pragma once

#include "GameFramework/Actor.h"
#include "Components/BillboardComponent.h"
#include "MyActor.generated.h"

/**
 * 
 */
UCLASS()
class NANTOPDOWN_API AMyActor : public AActor
{
	GENERATED_UCLASS_BODY()

	//virtual void BeginPlay() OVERRIDE;

	UPROPERTY()
	TSubobjectPtr<UBillboardComponent> SpriteComponent;

	UTexture2D* SpriteTexture;
	
};


#include "NanTopDown.h"
#include "MyActor.h"


AMyActor::AMyActor(const class FPostConstructInitializeProperties& PCIP)
	: Super(PCIP)
{
	struct FConstructorStatics
	{
		ConstructorHelpers::FObjectFinderOptional<UTexture2D> NoteTextureObject;

		FName ID_Notes;
		FText Name_Notes;

		FConstructorStatics()
			: NoteTextureObject(TEXT("Texture2D'/Game/Textures/MyIcon.MyIcon'"))
			, ID_Notes(TEXT("Notes"))
			, Name_Notes(NSLOCTEXT("SpriteCategory", "Notes", "Notes"))
		{
		}
	};
	
		static FConstructorStatics Cs;
		TSubobjectPtr<USceneComponent> SceneComponent = PCIP.CreateDefaultSubobject<USceneComponent>(
			this, TEXT("SceneComp"));
		RootComponent = SceneComponent;
		RootComponent->Mobility = EComponentMobility::Static;

#if WITH_EDITORONLY_DATA
		SpriteComponent = PCIP.CreateEditorOnlyDefaultSubobject<UBillboardComponent>(this, TEXT("Sprite"));
		if (SpriteComponent)
		{
			SpriteComponent->Sprite = Cs.NoteTextureObject.Get();
			SpriteComponent->SpriteInfo.Category = Cs.ID_Notes;
			SpriteComponent->SpriteInfo.DisplayName = Cs.Name_Notes;
			SpriteComponent->AttachParent = RootComponent;
			SpriteComponent->Mobility = EComponentMobility::Static;
		}
#endif
}


AMyActor仅仅有一个UBillboardComponent组件。增加场景就能够看到自己定义的图片了。


參考文章:https://wiki.unrealengine.com/Add_in_editor_Icon_to_your_Custom_Actor

转载于:https://www.cnblogs.com/wzzkaifa/p/7068580.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值