Table of Contents
Blueprint Enchant (Blueprint Enhancement) User Guide
Translation: English | 简体中文
Purchase link: https://www.fab.com/listings/ef857570-8ac7-4d32-a55b-492fe2236f43
1. How to Find Nodes in Blueprints
- Open any Blueprint.
- Right-click on an empty area in the graph to open the “Add Node” search box.
- Search by category or keyword:
- Blueprint Enchant | Array
- Blueprint Enchant | Bytes
- Blueprint Enchant | Math
- Blueprint Enchant | Math | Constants
- Blueprint Enchant | Math | Limits
- Blueprint Enchant | Misc
- Blueprint Enchant | Texture
- Blueprint Enchant | String | Language
Recommended: search by the node display name directly (e.g., Sort Array, Screen Shot, Get Pi).
2. Array Nodes (Blueprint Enchant | Array)
Most nodes in this group are “generic array nodes”: whatever array type you connect in the Blueprint will be used accordingly (refer to the node tooltip).
2.1 Sort Array (Sort)
- Node name: Sort Array (Compact title: Sort)
- Inputs
- TargetArray: target array (will be sorted)
- SortOrder: sorting order (Ascending/Descending)
- Outputs: none (modifies the array in place)
2.2 Pop (Remove Last)
- Node name: Pop
- Inputs
- TargetArray: target array
- Outputs
- PopValue: the removed last element (copy)
2.3 Push (Append to End)
- Node name: Push
- Inputs
- TargetArray
- PushValue: element to append
- Outputs
- Result: appended element (usually equals PushValue; useful for chaining)
2.4 Dedupe (Remove Duplicates)
- Node name: Dedupe
- Inputs
- TargetArray
- Outputs: none (modifies the array in place)
- Purpose: removes duplicate elements from the array
2.5 Average (Mean)
- Node name: Average (Compact title: Avg.)
- Inputs
- TargetArray: numeric array
- Outputs
- Result: average value (float)
2.6 NextPermutation / PrevPermutation (Permutation Iteration)
- Node names: NextPermutation, PrevPermutation
- Inputs
- TargetArray: numeric array
- Outputs: none (modifies the array in place)
2.7 Intersection / Union / Difference (Set Operations)
- Node names
- Intersection: intersection
- Union: union
- Difference: difference (see the node comment: difference of A and B)
- Inputs
- A, B: two arrays
- Outputs
- Result: result array
2.8 Random By Weight (Weighted Random)
- Node name: Random By Weight
- Inputs
- Array: element array (any type)
- WeightArray: weight array (float). Length must match Array.
- Outputs
- Element: selected element
3. Bytes (Byte/Memory Serialization) Nodes (Blueprint Enchant | Bytes)
Used to convert “any parameter/struct” to a byte array, or write back from bytes into a parameter (useful for save data, custom network packets, data normalization before compare/hash, etc.).
3.1 Get Param Memory Bytes (Convert Param to Byte Array)
- Node name: Get Param Memory Bytes
- Inputs
- RefParam: parameter of any type (supports structs, etc.; depends on Blueprint-connectable types)
- Outputs
- Return value: TArray
- Return value: TArray
- Example
- Create a variable (e.g., a struct variable MyStruct)
- Call Get Param Memory Bytes(MyStruct)
- You get a byte array that can be saved to file/save game, etc.
3.2 Set Param Memory Bytes (Overwrite Param with Byte Array)
- Node name: Set Param Memory Bytes
- Inputs
- RefParam: parameter to be written (by reference)
- BytesArray: byte array
- Outputs: none
- Steps
- Prepare a variable to write back into (type must match the source of the bytes)
- Call Set Param Memory Bytes(Variable, BytesArray)
3.3 Set Param Memory Index Byte / Get Param Memory Index Byte (Read/Write a Single Byte)
- Node names
- Set Param Memory Index Byte
- Get Param Memory Index Byte
- Inputs
- RefParam: target parameter
- Index: index
- Byte: byte to write / read
- Outputs
- Get: Byte (out)
- Purpose: debug or tweak serialized parameter memory by index (mind index bounds).
3.4 BytesToString / StringToBytes (String <-> Byte Array)
- BytesToString
- Input: Bytes
- Output: String
- StringToBytes
- Input: String
- Output: Bytes (appends)
- Use cases: text protocols, log-to-disk, simple serialization.
4. Math Nodes (Blueprint Enchant | Math)
4.1 Even / Odd
- Node names: Even, Odd
- Input: Value (int)
- Output: bool
4.2 Get Angle Between Two Vectors
- Node names
- Get Angle Between Two Vectors (Degrees): returns degrees
- Get Angle Between Two Vectors (Radians): returns radians
- Inputs
- VectorA, VectorB
- Output
- double
- Use case: compute the angle between two direction vectors, such as character forward vs. direction to a target.
5. Math Constants / Limits (Blueprint Enchant | Math | Constants / Limits)
5.1 Pi
- Node name: Get Pi (Compact title: PI)
- Output: double
5.2 Numeric Limits
- Node names
- 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)
- Use cases: boundary checks, normalization guards, avoiding division by zero, etc.
6. Misc Nodes (Blueprint Enchant | Misc)
6.1 Set Struct Property / Get Struct Property (Access Struct Fields by Name)
- Node names
- Set Struct Property
- Get Struct Property
- Inputs
- Struct: the struct (passed by reference)
- PropertyName: property path (supports '.' chaining)
- Value: string value to write / read
- Outputs
- Return value: bool (success/failure)
- Get also outputs Value (string)
- PropertyName format
- Simple field: Health
- Nested struct: Stats.Health
- Array index: Items[0]
- Mixed: Inventory.Items[2].Count
- Value format (common)
- Numbers: "123" / "3.14"
- Bool: "true" / "false"
- Vector/Color/etc.: use UE text import format (if unsure, call Get once to see the format)
- Example workflow
- Struct variable PlayerData
- Set Struct Property(PlayerData, "Stats.Health", "100")
- Get Struct Property(PlayerData, "Stats.Health", Value) and print Value
6.2 Save Object To Disk (Save an Object as an Asset into the Project Content)
- Node name: Save Object To Disk
- Inputs
- Object: UObject to save (e.g., a runtime-created texture)
- Path: package path (e.g., "/Game/TestObject")
- AssetName: asset name (e.g., "TestObject")
- Output
- bool: success/failure
- Steps
- Prepare an object (e.g., a runtime-created Texture2D)
- Set Path to /Game/
/ (example: /Game/Generated/MyTex) - AssetName is the displayed asset name (example: MyTex)
- Call the node to save
6.3 Screen Shot (Save Screenshot as PNG)
- Node name: Screen Shot
- Input
- Path: save path (e.g., D:/ScreenShot.png)
- Outputs: none
- Steps
- Call after the game is running (after the viewport is initialized)
- Pass an absolute path
- Check the PNG on disk
6.4 GenerateRandomString / GenerateRandomStringFromDict
- GenerateRandomString
- Inputs: Length, MatchSymbol (include symbols?)
- Output: random string
- GenerateRandomStringFromDict
- Inputs: Dict (custom charset), Length
- Output: random string
- Use cases: temporary IDs, random nicknames, one-time codes, etc.
7. Texture Nodes (Blueprint Enchant | Texture)
Most of these generate “Transient Textures” (runtime-only; not automatically saved as assets). To persist, use Save Object To Disk or write files yourself.
7.1 GetTextureChannel (Extract a Single Channel)
- Node name: GetTextureChannel
- Inputs
- InputTexture
- TextureChannel: B/G/R/A
- Output
- UTexture2D* (single-channel texture, usually grayscale)
- Usage
- Provide any Texture2D
- Select a channel (e.g., extract A as a mask)
- Use the returned texture in materials/UMG, etc.
7.2 GetTextureGray (Convert to Grayscale)
- Node name: GetTextureGray
- Inputs
- InputTexture
- UseAverage: true uses (R+G+B)/3; false uses weighted grayscale
- Output
- grayscale texture (Transient)
- Use cases: grayscale generation, preprocessing before threshold/mask, etc.
7.3 GetTextureAverageColor
- Node name: GetTextureAverageColor
- Input: InputTexture
- Output: FColor
- Use cases: main color extraction, UI adaptive coloring, etc.
7.4 GetTextureColor (Get Pixel Color)
- Node name: GetTextureColor
- Inputs
- InputTexture
- X, Y: pixel coordinates
- Output
- FLinearColor
- Note
- X/Y must be within the texture size (0..SizeX-1, 0..SizeY-1).
7.5 GetTextureColors (Get All Pixels)
- Node name: GetTextureColors
- Input: InputTexture
- Output: TArray
- Use cases: CPU-side pixel batch processing (sampling, statistics, generating new images, etc.).
7.6 GetCursorPosColor (Get Screen Pixel Under Cursor, Windows Only)
- Node name: GetCursorPosColor
- Output: FColor
- Note: only works on Windows.
7.7 Create Render Target 2D From Texture
- Node name: Create Render Target 2D From Texture
- Input: Texture
- Output: UTextureRenderTarget2D*
- Use case: convert a static texture to a RenderTarget for PNG export or render-pipeline operations.
7.8 Swap Texture Channel (Swap Channels)
- Node name: Swap Texture Channel
- Inputs
- Texture
- A, B: channels to swap (B/G/R/A)
- Output
- new UTexture2D*
- Use cases: fix channel order, swap R and A, etc.
7.9 Get Viewport Pixels (Read Current Viewport Pixels)
- Node name: Get Viewport Pixels
- Outputs
- Colors: FColor array
- X, Y: viewport width/height
- Usage
- Run the game and ensure the viewport is initialized
- Call the node to get pixel array
- Use Create Texture From Pixels to create a texture
7.10 Set Texture Channel Value (Set One Channel to a Constant Value)
- Node name: Set Texture Channel Value
- Inputs
- Texture: must be BGRA8 format (per node comment)
- ChannelType
- Value: 0~255
- Use cases
- e.g., set Alpha to 255 (fully opaque)
- Example
- Set Texture Channel Value(Texture, A, 255)
7.11 Create Texture From Pixels (Create Texture2D from Pixel Array)
- Node name: Create Texture From Pixels
- Inputs
- Pixels: FColor array (usually length = X*Y)
- X, Y
- Output
- UTexture2D* (B8G8R8A8)
- Use cases
- turn Get Viewport Pixels output into a texture, or create a texture from your own pixel data.
8. String | Language (Numbers to Localized Text)
8.1 DigitToChinese / DigitToEnglish / DigitToJapanese (Single Digit 0-9)
- Node names
- DigitToChinese(D, bUseLiangFor2)
- DigitToEnglish(D)
- DigitToJapanese(D)
- Inputs
- D: 0~9
- Chinese only: bUseLiangFor2 (whether 2 uses “两”)
- Output: localized digit text
8.2 ConvertToChineseNumeric / ConvertToEnglishNumeric / ConvertToJapaneseNumeric (Integer to Spoken Form)
- Node names
- ConvertToChineseNumeric(InNumber)
- ConvertToEnglishNumeric(InNumber)
- ConvertToJapaneseNumeric(InNumber)
- Input: integer (supports negative numbers)
- Output: string
- Use cases: UI readout text (Chinese money-style reading, English numbering, Japanese reading, etc.).
9. Common Examples
9.1 Save a Screenshot to Disk
- Call Screen Shot
- Path: D:/MyShot.png
9.2 Create a Texture from Viewport Pixels and Save as an Asset (Editor / when saving is allowed)
- Get Viewport Pixels -> Colors, X, Y
- Create Texture From Pixels(Colors, X, Y) -> Texture
- Set Texture Channel Value(Texture, A, 255) (make opaque)
- Save Object To Disk(Texture, "/Game/Generated/MyViewportTex", "MyViewportTex")
9.3 Weighted Lottery / Random Pick
- Array = [ItemA, ItemB, ItemC]
- WeightArray = [0.1, 0.3, 0.6]
- Random By Weight outputs Element (the selected prize)
10. Notes (Practical)
- Get Viewport Pixels / Screen Shot: call after the viewport is initialized (usually after BeginPlay; delaying one frame is safer).
- Texture processing nodes can be slow: avoid calling them every Tick at high frequency (especially full-image decode/iterate operations).
- Set Struct Property / Get Struct Property: validate with a simple field name first, then gradually add chaining/array indices to ease debugging.
- Save Object To Disk: Path should be a package path (like /Game/...), and AssetName must be valid and non-empty.
