Knowledge base
Knowledge base
Knowledge base
Free, anonymous browsing of Unreal Engine Blueprint examples, node references, and best practices. The same content the WoalzCraft plugin uses to generate Blueprints.
20 results for datatable
Exec outputs: 'Row Found' and 'Row Not Found'. OutRow type depends on the DataTable's row struct. RowName must match the row name in the DataTable asset exactly.
GetDataTableRowUE 5.3, 5.4, 5.5, 5.6, 5.7updated 2mo agoWhy: Your code looks up '{row}' in a DataTable, but no row with that name is present in the DataTable asset. Fix: Open the DataTable asset in Content Browser. Check the row names in the Row Editor panel. Either: (a) add the missing '{row}' row manually, or (b) update the lookup to use an existing row name, or (c) wire a Get All Row Names → ForEachLoop instead of hardcoding the name.
SETUP: 1. Create struct FItemData: {Name(Name), Damage(float), Icon(Texture2D), Description(Text)}. 2. Create DataTable with row type FItemData. Add rows (Sword, Bow, Staff...). READ: GetDataTableRow(Table=DT_Items, RowName='Sword') → Row Found exec → BreakFItemData(OutRow) → use Damage, Name, etc. DYNAMIC READ (from variable): SetVariable(CurrentItemName='Bow') → GetDataTableRow(RowName=CurrentItemName) → same flow. LIST ALL: GetDataTableRowNames → ForEachLoop → GetDataTableRow per name → display. Key: GetDataTableRow exec outs are 'Row Found' and 'Row Not Found' (NOT 'then').
A spreadsheet-like asset holding rows of a struct type. Great for item catalogs, dialogue lines, level configs.
GetDataTableRowNamesUE 5.3, 5.4, 5.5, 5.6, 5.7updated 2mo agoSETUP: In your BP, create an Event Dispatcher (e.g. 'OnPlayerDied') in the My Blueprint panel. BIND (in another BP): Get reference to actor → Bind Event to OnPlayerDied → connect a Custom Event as the target. CALL (in owning BP): Call OnPlayerDied (appears as a pink node) → this broadcasts to all bound listeners. Key: Event Dispatchers are called with 'Call <DispatcherName>' (not 'Broadcast'). Binding is done via 'Bind Event to <DispatcherName>' which has an 'Event' exec-like pin.
string
ADD: Array Add (Target Array=MyArray, New Item=newElement). READ: Array Get (Target Array=MyArray, Index=i) → use 'Item' output. FIND: Array Contains (returns bool) or Array Find (returns index, -1 if not found). REMOVE by index: Array Remove (Target Array=MyArray, Index=i). REMOVE by value: Array Remove Item (Target Array=MyArray, Item=value). ITERATE: ForEachLoop(Array=MyArray) → 'Array Element' output is the current item. LENGTH: Array Length (returns int). Key: Array nodes operate on the array BY REFERENCE — always connect the array variable directly.
Must call this before SetScalarParameterValue/SetVectorParameterValue. Store the result in a variable for reuse.
CreateDynamicMaterialInstanceUE 5.3, 5.4, 5.5, 5.6, 5.7updated 2mo agoMETHOD 1 - Function Binding (auto-updates every frame, easy but has perf cost): In Widget BP: select TextBlock → Details → Content → Text → click 'Bind' → Create Binding → connect your data (e.g. GetPlayerHealth as Text). METHOD 2 - Event-driven (recommended, update only when needed): In owning actor: when data changes → CastTo<WBP_HUD>(HUDWidget) → call custom function 'UpdateHealth(NewHealth)' on widget. In Widget BP: UpdateHealth function → SetText(HealthText, Conv_FloatToString(NewHealth)). KEY: Function bindings run every frame. For frequently-changing data (Tick-speed), use Event-driven approach instead to avoid perf issues.