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

  1. Open any Blueprint.
  2. Right-click on an empty area in the graph to open the “Add Node” search box.
  3. 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
  • Example
    1. Create a variable (e.g., a struct variable MyStruct)
    2. Call Get Param Memory Bytes(MyStruct)
    3. 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
    1. Prepare a variable to write back into (type must match the source of the bytes)
    2. 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
    1. Struct variable PlayerData
    2. Set Struct Property(PlayerData, "Stats.Health", "100")
    3. 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
    1. Prepare an object (e.g., a runtime-created Texture2D)
    2. Set Path to /Game// (example: /Game/Generated/MyTex)
    3. AssetName is the displayed asset name (example: MyTex)
    4. 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
    1. Call after the game is running (after the viewport is initialized)
    2. Pass an absolute path
    3. 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
    1. Provide any Texture2D
    2. Select a channel (e.g., extract A as a mask)
    3. 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
    1. Run the game and ensure the viewport is initialized
    2. Call the node to get pixel array
    3. 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

  1. Call Screen Shot
  2. Path: D:/MyShot.png

9.2 Create a Texture from Viewport Pixels and Save as an Asset (Editor / when saving is allowed)

  1. Get Viewport Pixels -> Colors, X, Y
  2. Create Texture From Pixels(Colors, X, Y) -> Texture
  3. Set Texture Channel Value(Texture, A, 255) (make opaque)
  4. Save Object To Disk(Texture, "/Game/Generated/MyViewportTex", "MyViewportTex")

9.3 Weighted Lottery / Random Pick

  1. Array = [ItemA, ItemB, ItemC]
  2. WeightArray = [0.1, 0.3, 0.6]
  3. 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.
Scroll to Top