【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, 对应不同结点的创建