EditorPlugin
新建plugin 包含多个modules默认包含 Type为 Runtime 和 Editor
module模块定义文件定义了依赖的模块
WidgetReflector 显示Slate的构造
自定义属性
注册 detail customizations
- 在 StartupModule()方法中注册
- 首先找到FPropertyEditorModule FModuleManager::LoadModuleChecked<FPropertyEditorModule >("PropertyEditor")
- 注册FPropertyEditorModule::RegisterCustomLayout("BaseEditorTool",FGetDetailCustomizationInstance::CreateSP(&FBaseEditorTool::MakeInstace))
- 通知FPropertyEditorModule模块改变 FPropertyEditorModule::NotifyCusomizationModuleChanged()
- 继承IDetailCustomization
- 在方法CustomizeDetails方法中自定义属性面板布局
- TSharedRef<SWindow> Window = PropertyModule.CreateFloatingDetailsView(ObjectsToView);
- 找到注册地方 FLevelEditorModule FModuleManager::LoadModuleChecked<FLevelEditorModule>("LevelEditor")
- 创建FExtender FExtender 添加Menu commands 或者 tool commands. 包含了添加的位置和添加菜单或工具栏的方法,添加的命令。具体方法为:FExtender:: AddMenuExtension/ FExtender::AddToolbarExtension
- 将含有菜单 工具栏的FExtender注册到相应的管理器中
- 菜单: levelEditorModule.GetMenuExtensibilityManager()->AddExtender(MenuExtender)
- 工具栏:levelEditorModule.GetToolBarExtensibilityManager()->AddExtender(ToolbarExtender)
- 找到创建extension的位置:EditorPerferences/General/Miscellaneous/DisplayUIExtensionPoints 显示编辑器所有extension的位置
- 在AddMenuExtension中提供的静态函数中通过 MenuBuilder::AddMenuEntry FUIAction 添加菜单项
- FNodeHandleFunctor UK2Node_VariableSet::CreateNodeHandler
- 自定义pin 类型
- 数量类型继承自UDataAsset
- AssetFactory 导入新建资源 创建默认的Actor方法
- FAssetTypeActions_Base 自定义资源图标处响应的Actions
- ThumbRenderer 图标出资源显示自定义Preview绘制
- CustomEditor 自定义ViewportClient 属性面板 Layout ,参考 FStaticMeshEditor
- 接管输入,影响level editor 一些显示
- 继承自TCommands<T> RegisterCommands 注册命令, UI_COMAND宏注册一个Command 名称 , ActionType, InputGesture
- Editor Preferences/General/KeyboardActions 绑定Command的输入
- 映射Action绑定命令的响应, MapAction(命令, 执行函数,有效状态判定函数)
- 绑定资源集合 笔刷贴图 字体