这是自己做的一个插件,可以在虚幻商城中下载,主要是利用 C++ 封装了 60+ 我认为引擎中缺少的蓝图。
点此打开虚幻商城
语言: >中文< | English
前言:这是一个目前具有 60+ 新增蓝图节点的库,而且正在持续更新中..
插件大致可以分为如下几个模块
- 网络模块 - 支持 TCP/UDP Socket 的接收与发送,默认为非阻塞
- 纹理模块 - 支持对 Texture2D 进行纹理操作
- 字节模块 - 支持对蓝图变量的实际内存地址进行增删改操作
- 数组模块 - 新增了蓝图对数组不太支持的一部分节点,例如通配符排序,去重,模拟交集,并集,差集,求平均,按权重随机等功能\
- 文件模块 - 新增了对文件的处理,如写入文件,读取文件,打开文件选择器等等
- 其他模块 - 新增了一些实用的函数,例如通过名称串(Struct.PropertyA.Property.Float)对具有名字的属性进行修改,与一些其他操作,例如随机生成字符串,截屏等。
- 数学模块 - 目前只有奇偶判断,求向量夹角,正在持续更新中..
网络模块
在 UE 中,我通过封装 FSocket 使其进行封装,只需要使用 BlueprintEnchantNetworkHandler
类型,便可以快速的搭建一个 Socket 使用。
例如搭建一个 TCP
协议的功能需要如下几个节点
- Create Socket Handler - 创建 Socket 变量的基础,可以选择 TCP/UDP 协议,是服务器还是客户端,并返回一个创建好的包装器。
- Bind - Bind 函数是 Handler 的成员函数,所以你需要先将返回的设置为一个变量,并用它来调用 Bind 函数,在函数中输入你本机的 IP 与 端口。
- Set Receive Buffer & Set Send Buffer - 这两个函数默认用于配置发送接收数据缓冲区大小,默认为 1024,如果没有额外的需要,一般情况下不需要修改。
- Listen - 这是一个仅用于服务器的函数,如果你的 Handler 是 Server 类型,那么你需要调用这个函数来监听是否有客户端申请链接,参数为最大连接数。
- Connect - 客户端专用,如果你的 Handler 是 Client 类型,你需要用这个函数连接至服务器绑定的 IP 上。
- Bind Event to On Accept - 这是一个服务器专用的委托,需要在 Listen 后绑定,当有客户端申请连接时,Handler 会自动处理接受并调用此委托,此委托返回一个 与客户端进行通信的 服务器Socket 实例,你需要用这个 Socket 与客户端交互。
- Bind Event to On Receive Data - 此委托会在 Socket 接收到消息的时候触发,并返回一个字节数组,你可以使用 BytesToString 函数快速转换成字符串,也可以根据自己的额外需求不作调整。当你使用 TCP Server 时,此委托需要绑定在 与客户端进行通信的服务器Socket 上,如果直接绑定在一开始的 Socket 上是不会触发的。(记得把返回的 Socket 设置为变量)
- Send Data & Send String - 向目标发送一串数据。
- Close - 关闭此 Socket。
这是一个完整的示例,分别是 TCP 服务器 与 TCP 客户端 的示例。
服务器:
客户端:
如果你想创建一个 UDP
协议,那么做起来就会简单许多,由于 UDP
不需要端之间建立连接,而是直接以包的形式发送给目标 IP。
- Bind - 首先绑定一个 IP 与 端口。
- Send Data To & Send String To - 此节点只作用于 UDP,切勿与 TCP 的 Send Data & Send String 弄混,输入 IP 与端口即可发送。
- Bind Event to On Receive Data From - 当绑定的 IP 接收到消息时,则会触发,返回一个 IP 与 端口。
- Close - 释放。
以下是一个完整的 UDP 示例。
其他功能:
- Tick In Editor - 使网络通信得以在编辑器中进行,适合编辑器的开发工作。
- Get Address - 得到目标 Handler 的 IP 地址。
- Bind Event to On Connection State Changed - 当 Handler 状态发生变化时,将会调用此委托。
纹理模块
纹理模块大部分函数都是以 BGR8 的格式进行的,如得到通道这种强制性只能输入 R G B A 四个通道的函数,会先将 Texture2D 转换为 BGRA8 再执行。
- Get Texture Channel - 得到 Texture2D 的某个通道,新建一个只有那个通道的 Texture2D,并以 Gray8 的格式返回一个新的。
- Get Texture Color - 得到 Texture2D 的某个位置的颜色值,返回 Color 类型。
- Set Texture Channel Value - 修改一个 Texture2D 某个通道,将一整个通道都设置为同一个值。
- Create Texture From Pixels - 输入一个颜色数组(从左到右,从上到下),与图像的像素尺寸,返回一个构建的 Texture2D。
- Swap Texture Channel - 交换一个 Texture2D 的两个通道,并返回一个新的 Texture2D。
- Get Texture Gray - 返回一个新建的 Texture2D,其代表的是输入 Texture2D 的灰度图,勾选 UseAverage 是以求平均的方式求灰度,否则是以人眼敏感的方式求灰度。
- Get Texture Colors - 返回一个从左到右,从上到下的颜色数组。
- Get Cursor Pos Color - 返回当前鼠标位置的颜色值(仅作用于 Windows 平台)
- Get Texture Average Color - 得到一个 Texture2D 所有像素的平均颜色。
- Get Viewport Pixels - 得到当前运行时视口的像素颜色数组。
- Create Render Target 2D From Texture - 输入一个 Texture2D 并返回一个 RenderTarget2D。
![]()
字节模块
此模块提供了对蓝图变量的实际内存地址进行操作的功能,允许用户直接修改内存中的数据。RefParam 可支持通配符输入。
-
Set Param Memory Bytes - 设置指定参数的内存字节。
- Ref Param - 需要操作的参数引用。
- Bytes Array - 字节数组,用于设置内存中的值。
-
Set Param Memory Index Byte - 设置指定参数内存中特定索引位置的字节。
- Ref Param - 需要操作的参数引用。
- Index - 字节的索引位置。
- Byte - 要设置的字节值。
-
Get Param Memory Bytes - 获取指定参数的内存字节。
- Ref Param - 需要操作的参数引用。
- Return Value - 返回的字节数组。
-
Get Param Memory Index Byte - 获取指定参数内存中特定索引位置的字节。
- Ref Param - 需要操作的参数引用。
- Index - 字节的索引位置。
- Byte - 返回的字节值。
-
Bytes to String - 将字节数组转换为字符串。
- Bytes - 输入的字节数组。
- Return Value - 转换后的字符串。
-
String to Bytes - 将字符串转换为字节数组。
- String - 输入的字符串。
- Bytes - 转换后的字节数组。
数组模块
此模块增强了蓝图对数组操作的支持。
-
Avg - 计算数组中所有元素的平均值。
- Input Array - 输入的数组。
- Average - 计算出的平均值。
-
Dedupe - 从数组中移除重复的元素。
- Input Array - 输入的数组。
- Output Array - 去重后的数组。
-
Pop - 弹出数组的最后一个元素。
- Input Array - 输入的数组。
- Element - 被弹出的元素。
-
Push - 向数组末尾添加一个元素。
- Input Array - 输入的数组。
- Element - 要添加的元素。
-
Difference - 返回两个数组的差集。
- Array A - 第一个数组。
- Array B - 第二个数组。
- Difference Array - 差集数组。
-
Intersection - 返回两个数组的交集。
- Array A - 第一个数组。
- Array B - 第二个数组。
- Intersection Array - 交集数组。
-
NextPermutation - 生成数组的下一个排列。
- Input Array - 输入的数组。
- Next Array - 下一个排列的数组。
-
PrevPermutation - 生成数组的前一个排列。
- Input Array - 输入的数组。
- Previous Array - 前一个排列的数组。
-
Sort - 对数组进行排序。
- Input Array - 输入的数组。
- Sort Order - 排序顺序(升序或降序)。
- Sorted Array - 排序后的数组。
-
Random By Weight - 根据权重随机选择数组中的元素。
- Input Array - 输入的数组。
- Weights - 对应元素的权重数组。
- Selected Element - 随机选中的元素。
-
Union - 返回两个数组的并集。
- Array A - 第一个数组。
- Array B - 第二个数组。
- Union Array - 并集数组。
文件操作模块
此模块提供了一系列节点,用于在蓝图中进行文件和文件夹的操作,使文件管理变得更加直接和便捷。以下是该模块的主要节点:
-
Open Files - 打开多个文件的选择器。
- Default Path - 默认路径。
- Selector Name - 选择器的名称。
- Filter - 文件筛选器,例如 "*.txt"。
- Return Value - 用户选择的文件路径数组。
-
Save String to File - 将字符串保存到文件中。
- Path - 文件路径。
- String - 要保存的字符串。
-
Save Bytes to File - 将字节数据保存到文件中。
- Path - 文件路径。
- Bytes - 要保存的字节数据。
-
Open File - 打开单个文件的选择器。
- Default Path - 默认路径。
- Selector Name - 选择器的名称。
- Filter - 文件筛选器,例如 "*.jpg"。
- Return Value - 用户选择的文件路径。
-
Open Folder - 打开文件夹选择器。
- Default Path - 默认路径。
- Selector Name - 选择器的名称。
- Return Value - 用户选择的文件夹路径。
-
Load Bytes to File - 从文件中加载字节数据。
- Path - 文件路径。
- Bytes - 加载的字节数据。
-
Load String from File - 从文件中加载字符串。
- Path - 文件路径。
- String - 加载的字符串。
其他模块
此模块包含了一些实用的功能节点,用于执行各种杂项任务,如结构体属性操作、屏幕截图以及字符串生成等。
-
Set Struct Property - 设置结构体中的属性值。
- Struct - 结构体实例。
- Property Name - 属性名称,可以是嵌套的属性路径。
- Value - 要设置的值。
-
Get Struct Property - 获取结构体中的属性值。
- Struct - 结构体实例。
- Property Name - 属性名称,可以是嵌套的属性路径。
- Return Value - 获取的属性值。
-
Screen Shot - 捕捉并保存屏幕截图。
- Path - 截图保存的路径。
-
Generate Random String from Dict - 根据字典生成随机字符串。
- Dict - 字典,包含可能的字符和对应的权重。
- Length - 生成字符串的长度。
- Return Value - 生成的随机字符串。
-
Generate Random String - 生成一个随机字符串。
- Length - 字符串长度。
- Match Symbol - 是否匹配特定的字符集。
- Return Value - 生成的随机字符串。
数学模块
正在持续更新中...
-
Even - 判断一个数是否为偶数。
- Input - 输入的整数。
- Return Value - 如果输入是偶数,则返回真(true),否则返回假(false)。
-
Odd - 判断一个数是否为奇数。
- Input - 输入的整数。
- Return Value - 如果输入是奇数,则返回真(true),否则返回假(false)。
-
Get Angle Between Two Vectors (Radians) - 计算两个向量之间的角度(以弧度为单位)。
- Vector A - 第一个向量。
- Vector B - 第二个向量。
- Return Value - 两个向量之间的角度,以弧度表示。
-
Get Angle Between Two Vectors (Degrees) - 计算两个向量之间的角度(以度为单位)。
- Vector A - 第一个向量。
- Vector B - 第二个向量。
- Return Value - 两个向量之间的角度,以度表示。