Unreal Engine Blueprints Functions, Events, and Macros 4 — Questions and Answers
Question 1: What is the difference between 'Call Function' and 'Call Function on Each Element in Array' in Blueprints?
- The latter iterates over an array and calls the function once per element using a ForEachLoop pattern (Correct answer)
- The latter calls the function simultaneously on all elements using multithreading
- The former is for Pure functions while the latter works only with impure functions
- There is no difference; both nodes produce identical behavior
Correct answer: The latter iterates over an array and calls the function once per element using a ForEachLoop pattern
'Call Function on Each Element in Array' internally uses a ForEachLoop to invoke the function once for every element sequentially.
Question 2: A Blueprint Macro uses a 'Tunnel' node. What is the purpose of the Tunnel node?
- It defines the macro's input and output interface pins that callers connect to (Correct answer)
- It creates a data tunnel between two separate Blueprint graphs
- It allows execution flow to skip over disabled nodes inside the macro
- It marks a section of the macro as collapsible in the editor
Correct answer: It defines the macro's input and output interface pins that callers connect to
Tunnel nodes (Inputs and Outputs) inside a macro define the external interface — the pins that appear on the macro node when it is placed in another graph.
Question 3: Which statement about Blueprint Function Libraries is accurate?
- All functions in a Function Library are implicitly static and require no object instance to call (Correct answer)
- Function Libraries must be placed in a level before their functions become available
- Function Library functions can access 'self' to reference the calling Blueprint
- Function Libraries support Blueprint inheritance and can be subclassed
Correct answer: All functions in a Function Library are implicitly static and require no object instance to call
Blueprint Function Libraries contain only static functions — no object context — making them globally callable utility nodes.
Question 4: How do you pass data OUT of a Blueprint Macro to its caller?
- Connect data wires to pins on the Outputs tunnel node inside the macro (Correct answer)
- Use a Return Node with output pins identical to the macro's data outputs
- Write to a variable shared between the macro and its calling graph
- Use the 'Set Variable by Name' node targeting the caller's scope
Correct answer: Connect data wires to pins on the Outputs tunnel node inside the macro
Data returned from a macro must be wired to the Outputs tunnel node, which exposes those values as output pins on the macro node in the caller's graph.
Question 5: What does the 'Validate Get' option do when enabled on a Blueprint variable getter node?
- Adds an Is Valid execution branch so the graph handles the case where the variable is null (Correct answer)
- Validates that the variable's value is within a defined min/max range before returning it
- Prevents the getter from being called in non-const functions
- Automatically initializes the variable to its default if it has never been set
Correct answer: Adds an Is Valid execution branch so the graph handles the case where the variable is null
Enabling Validate Get splits the getter into two execution paths — Is Valid and Is Not Valid — so you can safely handle null object references.
Question 6: A developer wants to fire a Blueprint event exactly once when a timer expires. Which approach is correct?
- Use 'Set Timer by Event' with looping disabled and bind it to a Custom Event (Correct answer)
- Use 'Set Timer by Function Name' with the Loop checkbox enabled and manually call Clear Timer
- Use the Delay node directly inside an event and connect it to another Delay to create a one-shot timer
- Use 'Create Timer' and set the Duration to -1 to indicate a single-fire timer
Correct answer: Use 'Set Timer by Event' with looping disabled and bind it to a Custom Event
Set Timer by Event with looping set to false fires the bound Custom Event once after the specified duration.
Question 7: In Blueprint, what is 'Execution Pinless' (Pure) function evaluation sometimes called, and what is a performance risk?
- Lazy evaluation; a Pure function connected to multiple nodes may execute multiple times per frame (Correct answer)
- Eager evaluation; the function caches its result and never re-evaluates
- Deferred evaluation; results are computed on the next tick
- Parallel evaluation; the engine runs all Pure functions simultaneously
Correct answer: Lazy evaluation; a Pure function connected to multiple nodes may execute multiple times per frame
Pure functions are re-evaluated each time their output is consumed, so connecting one Pure function to many nodes can cause redundant computation per frame.
What is the difference between 'Call Function' and 'Call Function on Each Element in Array' in Blueprints?