Place Actors
在PlacementModeModule.h里实现了IPlacementModeModule接口。
调用该接口的Register系列函数即可实现向Place Actors中添加自定义分类及其子项。
具体步骤如下:
- 创建一个Editor模块,因为定制PlacementMode的行为与编辑器UI相关,设该模块名为XUI
- XUI.build.cs文件里需要修改两处:PrivateIncludePathModuleNames与DynamicallyLoadedModuleNames均添加【PlacementMode】模块
- XUI.build.cs文件里视具体要求添加对其他runtime模块的引用
- 需要注意要添加的子项Actor,其代码实现中需要有XXX_API前缀
- 修改XUI所在插件的uplugin文件:将XUI的LoadingPhase改为PostEngineInit
- 这是因为EngineInit过程中,PlacementMode模块会初始化完毕。因此XUI在EngineInit之后加载,能保证成功获取到IPlacementModeModule接口
- XUI里的代码实现:
- 头文件里添加void RegisterXXXToPlacementMode()和void UnregisterXXXToPlacementMode()函数
- cpp文件里添加一行static const FName XXXCategoryInPlacementMode("XXX");作为Category的名字
- StartupModule()->RegisterXXXToPlacementMode(); ShutdownModule()->UnregisterXXXToPlacementMode();
- 上面两个函数实现见代码#480
- SuraControlPanel: 该插件演示了很多Slate相关的用法
- SuraControlPanelCommonBPLibrary.h
- 各个Tab页在UE内部的ID定义
- 如何唤起各个Tab页
- 编辑器SaveAll操作
- 选中操作:选中Actor、Component、Group等操作及反选
- 系统剪贴板的读写
- 运行时加载CppClass和BPClass文件,返回UClass指针:LoadClass(const FString& ClassReferencePath)
- 在一个SWidget里定位到指定的Slate控件
- SuraControlPanel.cpp
- 注册编辑器工具栏的启动回调:UToolMenus::RegisterStartupCallback()
- 在UE编辑器工具栏指定位置添加菜单项和按钮等
- 向UE注册自定义Tab页及返回系统为其分配的ID