【UE4】 自定义编辑器的放置Actor窗口

【UE4】 自定义编辑器的放置Actor窗口_第1张图片

 先看效果:自定义后的放置Actor窗口

目录

前言:

教程开始:

编辑创建的插件: 

插件头文件中:

在创建的插件函数--StartupModule()--(插件启用时)中声明并定义该结构体参数:

调用函数进行信息注册:

 通过引用进行加载蓝图Actor:

绑定引用到分类:

基本的创建分类和绑定蓝图类已经完成啦,那么怎么隐藏自带的分类呢?

 这里需要用到一个自带的函数来实现注销分类:UnregisterPlacementCategory 

最后启用插件并重启引擎即可.

后言:


前言:

写在自己创建的任意插件中,方便用到自定义引擎的项目,和引擎自带的一样可以拖放到视口里面(如果你不知道怎么创建一个自己的插件,请先学习创建插件)


教程开始:

FPlacementCategoryInfo-----引擎放置类信息结构体类

【UE4】 自定义编辑器的放置Actor窗口_第2张图片

 参数:显示命名,命名,tag,插槽... 

编辑创建的插件: 

uplugin中修改:

"LoadingPhase": "PostEngineInit"//引擎启动后生效,避免崩溃

插件头文件中:

#include "PlacementMode/Public/IPlacementModeModule.h"

在创建的插件函数--StartupModule()--(插件启用时)中声明并定义该结构体参数:

【UE4】 自定义编辑器的放置Actor窗口_第3张图片

int Priority = 45;

FPlacementCategoryInfo Info(

LOCTEXT("设备", "设备"),

"设备",

TEXT("PMMyCategory"),

Priority

); 

调用函数进行信息注册:

 调用函数RegisterPlacementCategory注册自定义好的信息

IPlacementModeModule::Get().RegisterPlacementCategory(Info);

 通过引用进行加载蓝图Actor:

 UClass* 名称 = LoadClass<类型>(NULL, TEXT(引用));

UClass* BP = LoadClass(NULL, TEXT("Blueprint'/Game/DAH/BP/BP.BP_C'")); 

绑定引用到分类:

 IPlacementModeModule::Get().RegisterPlaceableItem(信息结构名称.UniqueHandle, MakeShareable(new FPlaceableItem(nullptr, FAssetData(引用加载的蓝图类)))); 

IPlacementModeModule::Get().RegisterPlaceableItem(Info.UniqueHandle, MakeShareable(new FPlaceableItem(nullptr, FAssetData(BP)))); 

基本的创建分类和绑定蓝图类已经完成啦,那么怎么隐藏自带的分类呢?

【UE4】 自定义编辑器的放置Actor窗口_第4张图片

 这里需要用到一个自带的函数来实现注销分类:UnregisterPlacementCategory 

【UE4】 自定义编辑器的放置Actor窗口_第5张图片

IPlacementModeModule::Get().UnregisterPlacementCategory(FName("Basic")); 

对应的自带分类:

基础-Basic 光源-Light 体积-Volumes 所有类-AllClasses
过场动画-Cinematic 几何体-Geotmetry 视觉效果-Visual 最近放置-RecentlyPlaced

最后启用插件并重启引擎即可.


后言:

教程示例声明了不同的三个分类(info-设备;info2--大型装置;info5--人员),

但是只绑定了一个蓝图类(BP)到一个分类(info),你可以绑定不同的蓝图类到不同的分类或创建更多的类,如果你使用的是源码版引擎那么使用控件反射器就能够找到对应的源码参考。

你可能感兴趣的:(UE4,ue4,编辑器,虚幻)