【ue4】【使用】插件开发
插件
UE4 支持插件的独立编译和自由移植 -- 即插即用
一个插件可以渗透 Editor 的地方
菜单栏
工具栏
右链菜单项
模式里的预放置体
Detail 面板
可自定义自己的编辑器
插件也是由 模块 (Module) 组成的
插件的项目文件并非 .uproject
而是 .uplugin
插件也分为 引擎插件 (附在引擎源文件中) 和 游戏插件 (附在游戏源文件中)
插件可以同时拥有 Eidtor 类型的 Module 和 Runtime 类型的 Module
插件可以引用任何模块 (引擎的和游戏的), 但是引擎插件或者编辑器插件最好不要引用游戏的模块 (无法移植)
一个插件也可以引用另一个插件, 但是最好不要这么做 (也不好移植)
开发 Editor 使用的插件可以使用 Slate 作为 UI 开发
Slate
Slate 是一种完全自定义的、平台无关的用户界面架构
UE的所有可视化工具都是基于Slate UI 编写的, 而在游戏中推荐使用的 UMG UI 则是 Slate 的可视化编辑接口, 即在 Slate 的基础上又封装了一层可视化的接口。
Slate 的实质是利用 宏和C++运算符重载 来实现的布局语法
Slate 是基于事件和委托的, 也是一种 IMGUI
Slate 为了做某件事而产生的工具集称作 ToolKit, 由下面元素组成
FSlateApplication -- Slate 的最高层管理器 -- 管理所有顶层窗口
SWindow -- 顶层窗口 -- 针对不同平台对应 FGenericWindow
Tab -- 标签页 -- 通过 TabManager 管理
Dock -- 给 Tab 提供悬浮功能
除此之外, Slate 还为窗口准备了部局 Layout
Stack 类布局 -- 多个 Tab 共享一个区域, 通过 Tab 头切换
Splitter 类布局 -- 可对本身的区域进行划分
【Tips】 Layout 可以通过配置表来设置布局
自定义编辑器
Slate 可供用户像蓝图结点那样定义出自己的结点, 从而实现一个类似于蓝图的自制编辑器
UEdGraphNode
蓝图中的一个包含 Input 和 Output 的函数, 或者材质编辑器中的一个节点, 都是一个 GraphNode
Pin
节点的 引脚, 通过 Pin 可以连接两个节点
一个 Node 有多个 Pin, 总体来说 Pin 分 Input 和 Output 两种
Pin 只能由 Output 连 Input
UEdGraph
所有的 Node 合成一张图表即为 UEdGraph, 如一张蓝图, 一个材质等
UEdGraphSchema
每个 UEdGraph 都包括一个 UEdGraphSchema
UEdGraphSchema 表示制表, 决定当前的 Graph 创建节点的规则
它也包括一系列的 FEdGraphSchemaAction, 对应不同结点的创建