All Unreal Engine 4

Unreal 编辑器扩展

 
 

UI系统区分

 
 

  • UMG,虚幻运动图形界面设计器(Unreal Motion Graphics UI Designer)
    • 一个可视化的UI创作工具,用来创建UI元素,如游戏中的HUD、菜单或其它界面相关元素。
    • 设计器(Designer)选项卡允许界面和基本函数的可视化布局
    • 图表(Graph)选项卡提供所使用控件背后的功能。
    • 可以暴露于BP

 
 

  • Slate ,虚幻引擎中的自定义用户界面系统。
    • 主要用于编辑器的实现
    • 在游戏中也可以使用
    • 只能应用于C++

 
 

  • 二者关联:
    • UMG是对Slate的上层封装
    • SlateUMG的底层实现

 
 

 
 

 
 

 
 

扩展编辑器创建插件

 
 

第一步,创建模板插件。

 
 

三种模版插件

 
 

  

Editor

Runtime

适用范围

离线编辑

离线&运行时

编辑器宏

不需要

需要区分

数据复用

不可以

可以

 
 

 
 

 
 

扩展编辑器菜单&工具栏

 
 

扩展点(Extension Points of Menu&ToolBar

 
 

 
 

1. 定义并注册一个UICommand

2. 绑定回调,并加入UICommandList

3. 回调实现

4. UICommandList封装成FExtender,并插入到合适的扩展点

5. 设置并注册图标

 
 

 
 

 
 

 
 

扩展编辑器自定义资源

 
 

引擎内置的资源类型

 
 

自定义的资源类型

 
 

1. 要加入自定义类型Asset,需要加入两个类

一个类(继承于UObject)包含该资源的所有属性

一个类(命名为UXFactory)用来构建上面的类,生成一个.uasset文件

2. 注册新资源到ContentBrowser

3. 新资源的图标定义

 
 

 
 

 
 

 
 

扩展编辑器扩展属性面板

 
 

默认基于Uproperty的扩展

 
 

复杂UI面板的扩展

 
 

1. 创建要扩展属性的Actor

2. 创建对应的面板定义类

3. 回调函数

4. 注册自定义面板到PropertyEditor

 
 

 
 

 
 

扩展编辑器编辑模式(EditMode

 
 

什么是EditMode

 
 

通过模板创建一个EditMode,该插件演示了通过按钮来移动选定Actor

 
 

EditMode基本框架,一个扩展插件主要组成:

  • FEdMode
  • 封装整个模式
  • FModeToolkit
  • 负责界面表示
  • FSlateStyleSet
  • 界面风格定义
  • ModuleInterface
  • 插件接口
  • Custom Logic
  • 实现自己的功能类

 
 

FEdMode:管理整个EditMode的框架

  • 各种事件接口回调
  • Actor属性相关回调
  • Widget接口
  • UWorld接口
  • 绘制接口
  • 视口控制
  • 。。。

 
 

FModeToolkit:封装EditMode对应编辑窗体实现,定义窗体各控件的布局、格式、行为等。

EDMode关联

 
 

FModeToolkit窗体结构分析

 
 

 
 

 
 

扩展编辑器辅助工具

 
 

  • Widget Reflector

 
 

打开:

Menu: Window/Developer Tools/ Widget Reflector

Ctrl + Shift + W

console command: WidgetReflector

 
 

作用:

分析编辑器的UI结构

定位其实现源码

分析游戏UI结构,帮助优化

 
 

  • DebugTools-TestSuite

 
 

 
 

 
 

扩展编辑器回退系统

 
 

基于UObject的回退系統

 
 

1. 定义Uobject对象,标记UPROPERTY

2.对象标记 RF_Transactional

3. UObject一次修改定义

实现:记录Object状态到Transaction Buffer

4. Undo回调接口:PostEditUndo