内容纲要
Blueprint Enchant(蓝图增强)使用教程
翻译: 简体中文 | English
购买地址:https://www.fab.com/listings/ef857570-8ac7-4d32-a55b-492fe2236f43
1. 在蓝图里找到节点的方法
- 打开任意蓝图。
- 在图表空白处 右键 打开“添加节点”搜索框。
- 通过分类或关键词搜索:
Blueprint Enchant | ArrayBlueprint Enchant | BytesBlueprint Enchant | MathBlueprint Enchant | Math | ConstantsBlueprint Enchant | Math | LimitsBlueprint Enchant | MiscBlueprint Enchant | TextureBlueprint Enchant | String | Language
建议直接搜节点显示名(如 Sort Array、Screen Shot、Get Pi )。
2. Array(数组)节点用法(Blueprint Enchant | Array)
这组节点大多是“泛型数组节点”:你在蓝图里接入什么类型的数组,就会按该类型工作(以节点提示为准)。
2.1 Sort Array(Sort)
- 节点名:
Sort Array(紧凑标题:Sort) - 输入
TargetArray:目标数组(会被排序)SortOrder:排序方式(Ascending/Descending)
- 输出:无(直接修改数组)
2.2 Pop(弹出末尾)
- 节点名:
Pop - 输入
TargetArray:目标数组
- 输出
PopValue:被移除的最后一个元素(拷贝)
2.3 Push(追加到末尾)
- 节点名:
Push - 输入
TargetArrayPushValue:要追加的元素
- 输出
Result:追加进去的元素(通常等于 PushValue,用于链式连接)
2.4 Dedupe(去重)
- 节点名:
Dedupe - 输入
TargetArray
- 输出:无(直接修改数组)
- 用途:对数组做去重(把重复元素移除)
2.5 Average(求平均)
- 节点名:
Average(紧凑标题:Avg.) - 输入
TargetArray:数值数组
- 输出
Result:平均值(float)
2.6 NextPermutation / PrevPermutation(排列迭代)
- 节点名:
NextPermutation、PrevPermutation - 输入
TargetArray:数值数组
- 输出:无(直接修改数组)
2.7 Intersection / Union / Difference(集合运算)
- 节点名
Intersection:交集Union:并集Difference:差集(以节点注释为准:A 与 B 的差集)
- 输入
A、B:两个数组
- 输出
Result:结果数组
2.8 Random By Weight(按权重随机)
- 节点名:
Random By Weight - 输入
Array:元素数组(任意类型)WeightArray:权重数组(float),长度必须与 Array 相同
- 输出
Element:抽到的元素
3. Bytes(字节/内存序列化)节点用法(Blueprint Enchant | Bytes)
用于把“任意参数/结构体”等转换为字节数组,或从字节数组写回参数(适合存档、自定义网络封包、对比/哈希前的统一数据等)。
3.1 Get Param Memory Bytes(把参数转成字节数组)
- 节点名:
Get Param Memory Bytes - 输入
RefParam:任意类型参数(支持结构体等,按蓝图可接入的类型为准)
- 输出
- 返回值:
TArray<uint8>
- 返回值:
- 用法示例
- 放一个变量(例如某个结构体变量
MyStruct) - 调用
Get Param Memory Bytes(MyStruct) - 得到 Byte 数组,可保存到文件/存档等
- 放一个变量(例如某个结构体变量
3.2 Set Param Memory Bytes(用字节数组覆盖参数)
- 节点名:
Set Param Memory Bytes - 输入
RefParam:要被写入的参数(引用)BytesArray:字节数组
- 输出:无
- 使用步骤
- 准备一个要写回的变量(类型必须与字节来源匹配)
- 调用
Set Param Memory Bytes(变量, BytesArray)
3.3 Set Param Memory Index Byte / Get Param Memory Index Byte(读写单字节)
- 节点名
Set Param Memory Index ByteGet Param Memory Index Byte
- 输入
RefParam:目标参数Index:索引Byte:要写入/读取的字节
- 输出
- Get:
Byte(out)
- Get:
- 用途:对序列化后的参数内存按索引进行调试或微调(使用时注意索引范围)。
3.4 BytesToString / StringToBytes(字符串与字节数组互转)
- BytesToString
- 输入:
Bytes - 输出:
String
- 输入:
- StringToBytes
- 输入:
String - 输出:
Bytes(追加写入)
- 输入:
- 用法
- 做文本协议/日志落盘/简单序列化时可用。
4. Math(数学)节点用法(Blueprint Enchant | Math)
4.1 Even / Odd(奇偶判断)
- 节点名:
Even、Odd - 输入:
Value(int) - 输出:bool
4.2 Get Angle Between Two Vectors(向量夹角)
- 节点名
Get Angle Between Two Vectors (Degrees):返回角度制Get Angle Between Two Vectors (Radians):返回弧度制
- 输入
VectorA、VectorB
- 输出
- double
- 用法
- 计算两个方向向量夹角,例如角色朝向与目标方向的偏角。
5. Math 常量/极值(Blueprint Enchant | Math | Constants / Limits)
5.1 Pi
- 节点名:
Get Pi(紧凑标题:PI) - 输出:double
5.2 数值极限
- 节点名
Get Int32 Max(I32_MAX)Get Int32 Min(I32_MIN)Get Int64 Max(I64_MAX)Get Int64 Min(I64_MIN)Get Float Max(F_MAX)Get Float Smallest Positive (Normal)(F_MIN+)Get Float Epsilon(F_EPS)Get Double Max(D_MAX)Get Double Smallest Positive (Normal)(D_MIN+)Get Double Epsilon(D_EPS)
- 用途
- 做边界判断、归一化保护、避免除零等。
6. Misc(杂项)节点用法(Blueprint Enchant | Misc)
6.1 Set Struct Property / Get Struct Property(按名称读写结构体字段)
- 节点名
Set Struct PropertyGet Struct Property
- 输入
Struct:结构体(按引用传入)PropertyName:属性链名称(支持.链式)Value:要写入/读出的字符串值
- 输出
- 返回值:bool(是否执行成功)
- Get 还会输出
Value(字符串)
- PropertyName 写法
- 普通字段:
Health - 子结构体:
Stats.Health - 数组下标:
Items[0] - 混合链:
Inventory.Items[2].Count
- 普通字段:
- Value 写法(常见)
- 数字:
"123"/"3.14" - 布尔:
"true"/"false" - 向量/颜色等:按 UE 文本导入格式填写(不确定时可先用 Get 读出一次看看格式)
- 数字:
- 使用示例流程
- 结构体变量
PlayerData Set Struct Property(PlayerData, "Stats.Health", "100")- 在
Get Struct Property(PlayerData, "Stats.Health", Value)打印 Value
- 结构体变量
6.2 Save Object To Disk(保存对象为资产到工程内容目录)
- 节点名:
Save Object To Disk - 输入
Object:要保存的 UObject(例如运行时创建的纹理等)Path:包路径(例如"/Game/TestObject")AssetName:资产名(例如"TestObject")
- 输出
- bool:是否保存成功
- 使用步骤
- 准备一个对象(如运行时创建的 Texture2D)
- 设置
Path为/Game/某文件夹/某资产包名(示例:/Game/Generated/MyTex) AssetName填资产显示名称(示例:MyTex)- 调用节点保存
6.3 Screen Shot(截图保存 PNG)
- 节点名:
Screen Shot - 输入
Path:保存路径(例如D:/ScreenShot.png)
- 输出:无
- 使用步骤
- 在游戏运行后(Viewport 初始化完成后)调用
- 传入你要保存的绝对路径
- 在磁盘查看输出 PNG
6.4 GenerateRandomString / GenerateRandomStringFromDict(随机字符串)
- GenerateRandomString
- 输入:
Length、MatchSymbol(是否包含符号) - 输出:随机字符串
- 输入:
- GenerateRandomStringFromDict
- 输入:
Dict(自定义字符集)、Length - 输出:随机字符串
- 输入:
- 用途
- 临时 ID、随机昵称、一次性码等。
7. Texture(纹理)节点用法(Blueprint Enchant | Texture)
多数会生成“Transient Texture”(临时纹理,运行时存在,不会自动保存为资产)。需要落盘可配合
Save Object To Disk或自己写文件。
7.1 GetTextureChannel(提取单通道)
- 节点名:
GetTextureChannel - 输入
InputTextureTextureChannel:B/G/R/A
- 输出
UTexture2D*(单通道纹理,通常是灰度表现)
- 用法
- 传入任意 Texture2D
- 选择通道(例如取 A 做遮罩)
- 用返回纹理去做材质/UMG 显示等
7.2 GetTextureGray(转灰度)
- 节点名:
GetTextureGray - 输入
InputTextureUseAverage:true 使用 (R+G+B)/3;false 使用加权灰度
- 输出
- 灰度纹理(Transient)
- 用途:生成灰度图、做阈值/遮罩前处理等。
7.3 GetTextureAverageColor(平均色)
- 节点名:
GetTextureAverageColor - 输入:
InputTexture - 输出:
FColor - 用途:提取主色调、UI 自适应配色等。
7.4 GetTextureColor(取某像素颜色)
- 节点名:
GetTextureColor - 输入
InputTextureX、Y:像素坐标
- 输出
FLinearColor
- 注意
- X/Y 要在纹理尺寸范围内(0..SizeX-1, 0..SizeY-1)。
7.5 GetTextureColors(取整张图像素数组)
- 节点名:
GetTextureColors - 输入:
InputTexture - 输出:
TArray<FColor> - 用途:CPU 侧批处理像素(例如采样、统计、生成新图)。
7.6 GetCursorPosColor(取鼠标所在屏幕像素颜色,仅 Windows)
- 节点名:
GetCursorPosColor - 输出:
FColor - 注意:仅 Windows 平台生效。
7.7 Create Render Target 2D From Texture(由 Texture2D 创建 RT)
- 节点名:
Create Render Target 2D From Texture - 输入:
Texture - 输出:
UTextureRenderTarget2D* - 用途:把静态纹理转到 RenderTarget,方便后续导出 PNG 或做渲染管线操作。
7.8 Swap Texture Channel(交换通道)
- 节点名:
Swap Texture Channel - 输入
TextureA、B:要交换的两个通道(B/G/R/A)
- 输出
- 新的
UTexture2D*
- 新的
- 用途:修正通道顺序、把 R/A 互换等。
7.9 Get Viewport Pixels(读取当前视口像素)
- 节点名:
Get Viewport Pixels - 输出
Colors:FColor 数组X、Y:视口宽高
- 用法
- 游戏运行且视口已初始化
- 调用后得到屏幕像素数组
- 可配合
Create Texture From Pixels生成纹理
7.10 Set Texture Channel Value(把整张图某通道置为固定值)
- 节点名:
Set Texture Channel Value - 输入
Texture:要求是 BGRA8 格式(按节点注释)ChannelTypeValue:0~255
- 用途
- 例如把 Alpha 全部设为 255(不透明)
- 示例
Set Texture Channel Value(Texture, A, 255)
7.11 Create Texture From Pixels(由像素数组创建 Texture2D)
- 节点名:
Create Texture From Pixels - 输入
Pixels:FColor 数组(通常长度 = X*Y)X、Y
- 输出
UTexture2D*(B8G8R8A8)
- 用途
- 把
Get Viewport Pixels的结果变成一张纹理,或把你自己生成的像素数据变成纹理。
- 把
8. String | Language(数字转语言文本)
8.1 DigitToChinese / DigitToEnglish / DigitToJapanese(单个数字 0-9)
- 节点名
DigitToChinese(D, bUseLiangFor2)DigitToEnglish(D)DigitToJapanese(D)
- 输入
D:0~9- 中文额外参数:
bUseLiangFor2(2 是否用“两”)
- 输出:对应语言的数字文本
8.2 ConvertToChineseNumeric / ConvertToEnglishNumeric / ConvertToJapaneseNumeric(整数转读法)
- 节点名
ConvertToChineseNumeric(InNumber)ConvertToEnglishNumeric(InNumber)ConvertToJapaneseNumeric(InNumber)
- 输入:整数(支持负数)
- 输出:字符串
- 用途
- UI 显示数字读法(如中文金额、英文读数、日文读数等)。
9. 常见用法示例
9.1 截图保存到磁盘
- 调用
Screen Shot - Path 传入:
D:/MyShot.png
9.2 从视口像素生成纹理并保存为资产(编辑器/允许保存时)
Get Viewport Pixels得到Colors, X, YCreate Texture From Pixels(Colors, X, Y)得到TextureSet Texture Channel Value(Texture, A, 255)(设为不透明)Save Object To Disk(Texture, "/Game/Generated/MyViewportTex", "MyViewportTex")
9.3 按权重抽奖
Array = [ItemA, ItemB, ItemC]WeightArray = [0.1, 0.3, 0.6]Random By Weight输出Element,即中奖项
10. 注意事项(使用层面)
Get Viewport Pixels/Screen Shot:需要视口初始化完成后调用(通常 BeginPlay 之后/延迟一帧较为合理)。- 纹理处理类节点通常较慢:避免在 Tick 高频调用(尤其是整图像素解码/遍历相关)。
Set Struct Property / Get Struct Property:PropertyName建议先用简单字段名验证,再逐步增加链式/数组下标,便于排错。Save Object To Disk:保存路径使用包路径(如/Game/...),并确保 AssetName 合法且不为空。
