标签:unreal engine c++ components 编辑器 game
有时候我们创建场景的时候,特定的Actor我们想给它一个特定的图标,便于观察。比如这样:
实现起来也很简单,需要编写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 }
参考文章:https://wiki.unrealengine.com/Add_in_editor_Icon_to_your_Custom_Actor
Unreal Engine 4 C++ 为编辑器中Actor创建自定义图标
标签:unreal engine c++ components 编辑器 game
原文地址:http://blog.csdn.net/shangguanwaner/article/details/39958329