Skip to main content

Special Nodes

These are "Special" nodes. This includes flow control and special Udon features.

Block

Splits flow into multiple sections. One flow input, multiple flow output. Executes all right-side flow slots from top to bottom.

Branch

Inputs: Bool - System.Boolean

Branches execution based on a conditional evaluation. If Bool is True, True flow path is executed. If Bool is False, False flow path is executed.

Comment

Provides a space for the user to type a comment string. This string is not included during compilation.

Const Null

Provides a "null" value for nullchecking purposes.

Const This

Provides a reference to the GameObject that the UdonBehavior is a component of.

Event Custom

Inputs: name - System.String

Recieves a custom event. Custom event name must be typed, cannot be provided via node input.

For

Inputs: start, end, step - System.Int32

Outputs: index - System.Int32

Executes flow by using a counter. A counter is initalized with the value of start. The Body flow is executed, and then the counter is incremented by the step value. This continues until the counter's value is greater than end. Once that has occured, flow continues along on the Exit flow.

Get Variable

Inputs: name - System.String

Outputs: System.Object

Gets the Udon variable named name and provides it as output.

Set Variable

Inputs: name - System.String value - System.Object sendChange - Boolean

Sets the Udon variable named name to value when flow is executed. If sendChange is checked, it will also trigger the OnVariableChanged event for that variable.

Get Program Variable

Inputs: instance - UdonBehaviour symbolName - string

Get the value of an Udon variable symbolName from another UdonBehaviour instance. Works best if the target UdonBehaviour is a public variable and it's wired up in the Inspector, which allows you to choose the target variable name from a dropdown. If there's no UdonBehaviour connected to instance, it will use the current UdonBehaviour's variable names. If you instead know the name of the variable and want to set it directly, use a String const node to write it in by hand.

Set Program Variable

Inputs: instance - UdonBehaviour symbolName - string value - Object

Sets the value of an Udon variable symbolName on another UdonBehaviour instance to value. Works best if the target UdonBehaviour is a public variable and it's wired up in the Inspector, which allows you to choose the target variable name from a dropdown. If there's no UdonBehaviour connected to instance, it will use the current UdonBehaviour's variable names. If you instead know the name of the variable and want to set it directly, use a String const node to write it in by hand. This node will also trigger the OnVariableChanged event for the target variable.

On Variable Changed

Outputs: newValue oldValue

Triggers whenever SetProgramVariable is called on the target variable, or when Set Variable is called with sendChange checked. Works for synced variables, too!

While

Inputs: Bool - System.Boolean

Executes the flow of Body while Bool is true. If Bool is false, executes Exit flow.

UdonBehaviour Nodes

UdonBehaviours have a few special nodes:

SendCustomEvent

Inputs: instance - UdonBehaviour, eventName - String

Runs the event 'eventName' on the target UdonBehaviour. If instance is left blank, it points to one of its own events.

SendCustomEventDelayedFrames

Inputs: instance - UdonBehaviour, eventName - String, delayFrames - int, eventTiming - EventTiming

Runs the event 'eventName' on the target UdonBehaviour, after waiting for delayFrames. It will run the event during Update or LateUpdate, depending on which eventTiming is selected. Minimum of 1 frame delay.

Note that Unity's frames count is based on the Update event. If you call SendCustomEventDelayedFrames before the Update event, such as Start or an Input event, the delay may be 1 frame shorter than expected.

SendCustomEventDelayedSeconds

Inputs: instance - UdonBehaviour, eventName - String, delaySeconds - float, eventTiming - EventTiming Runs the event 'eventName' on the target UdonBehaviour, after waiting for delaySeconds. It will run the event during Update or LateUpdate, depending on which eventTiming is selected.

SendCustomNetworkEvent

Inputs: instance - UdonBehaviour, target - NetworkEventTarget, eventName - String

Runs the event 'eventName' on the target UdonBehaviour - either on the Owner of the target if 'Owner' is selected as the target, or on Everyone in the instance if 'all' is selected.