自制UE插件-蓝图增强 教程

内容目录

这是自己做的一个插件,可以在虚幻商城中下载,主要是利用 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 - 两个向量之间的角度,以度表示。
同步Sch

Recent Posts

UE-Rider 无法解析 SDK 解决方案

无法解析 SDK“Micros…

5 天 ago

杂项 – 关于Ascii字符画生成相关网站

网站 如果想实现这样的注释效果…

2 周 ago

C++-分数泛型模板类实现

前言 在引擎库中,有时候可能会…

3 周 ago

C++-HashMap 数据结构的实现

前要说明 HashMap 是一…

1 月 ago

杂项 – Markdown

跳转到 Markdown – …

1 月 ago

杂谈-我都玩过什么游戏

在面试的过程中,我发现游戏公司…

3 月 ago