先看效果:自定义后的放置Actor窗口
前言:
教程开始:
编辑创建的插件:
插件头文件中:
在创建的插件函数--StartupModule()--(插件启用时)中声明并定义该结构体参数:
调用函数进行信息注册:
通过引用进行加载蓝图Actor:
绑定引用到分类:
基本的创建分类和绑定蓝图类已经完成啦,那么怎么隐藏自带的分类呢?
这里需要用到一个自带的函数来实现注销分类:UnregisterPlacementCategory
最后启用插件并重启引擎即可.
后言:
写在自己创建的任意插件中,方便用到自定义引擎的项目,和引擎自带的一样可以拖放到视口里面(如果你不知道怎么创建一个自己的插件,请先学习创建插件)
FPlacementCategoryInfo-----引擎放置类信息结构体类
参数:显示命名,命名,tag,插槽...
"LoadingPhase": "PostEngineInit"//引擎启动后生效,避免崩溃
#include "PlacementMode/Public/IPlacementModeModule.h"
int Priority = 45;
FPlacementCategoryInfo Info(
LOCTEXT("设备", "设备"),
"设备",
TEXT("PMMyCategory"),
Priority
);
调用函数RegisterPlacementCategory注册自定义好的信息
IPlacementModeModule::Get().RegisterPlacementCategory(Info);
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))));
IPlacementModeModule::Get().UnregisterPlacementCategory(FName("Basic"));
对应的自带分类:
基础-Basic | 光源-Light | 体积-Volumes | 所有类-AllClasses |
过场动画-Cinematic | 几何体-Geotmetry | 视觉效果-Visual | 最近放置-RecentlyPlaced |
教程示例声明了不同的三个分类(info-设备;info2--大型装置;info5--人员),
但是只绑定了一个蓝图类(BP)到一个分类(info),你可以绑定不同的蓝图类到不同的分类或创建更多的类,如果你使用的是源码版引擎那么使用控件反射器就能够找到对应的源码参考。