Node
The base class for all user-accessible nodes in a graph.
Read time 3 minutesLast updated 6 days ago
Definition
- Type: Class
- Namespace: Unity.GraphToolkit.Editor
- Assembly: UnityEditor
- Implements: INode
public abstract class Node : INode
Remarks
Inherit from this class to define custom node types that appear in the graph. The Node class provides lifecycle hooks, serialization support, and the structure needed to define ports, UI behaviors, and custom logic. This class forms the foundation of all user-defined nodes in a graph-based tool, including variable nodes, context nodes, and subgraph nodes.
To create a custom node, derive from Node, define its input and output ports using a port builder in Node.OnDefinePorts, and define its INodeOptions in Node.OnDefineOptions.
To customize the VisualElement generated for a node, derive from NodeView<T> with your node type as the type argument, and add custom UI in the lifecycle callbacks it exposes.
This class is used in combination with other types like INode, IPort, and Node.Graph to construct and manage node-based workflows.
Properties
Property | Description |
|---|---|
| DefaultColor | The highlight color of the node. The highlight is located on the upper border of nodes, and on the upper and lower borders of context nodes. |
| FillAmount | The progress fill amount displayed on the node's accent bar, expressed as a percentage. |
| Graph | The Node.Graph that contains this node. |
| ID | The globally unique identifier for this node. |
| InputPortCount | The number of input ports on the node. |
| NodeOptionCount | The number of node options defined in the node. |
| NodeOptions | The node options defined on this node. |
| OutputPortCount | The number of output ports on the node. |
| Position | The position of the node in the graph. |
| Subtitle | The secondary text displayed in the node's header. |
| Title | The main text displayed in the node's header. |
| Tooltip | The text displayed when hovering over the node's header. |
Methods
Method | Description |
|---|---|
| DefineNode | Defines the structure of the node by building its ports and options. |
| GetInputPort | Retrieves an input port using its index. |
| GetInputPortByName | Retrieves an input port using its name. |
| GetInputPorts | Retrieves all input ports on the node in the order they are displayed. |
| GetNodeOption | Retrieves a node option using its zero-based index. |
| GetNodeOptionByName | Retrieves a node option using its name. |
| GetOutputPort | Retrieves an output port using its index in the displayed order. |
| GetOutputPortByName | Retrieves an output port using its name. |
| GetOutputPorts | Retrieves all output ports on the node in the order they are displayed. |
| OnDefineOptions | Called during Node.DefineNode to define the options available on the node. |
| OnDefinePorts | Called during Node.DefineNode to define the input and output ports of the node. |
| OnDisable | Called when the node is removed or when the graph is disabled. |
| OnEnable | Called when the node is created or when the graph is enabled. |
| OnPortDataTypeChanged | Called when the data type of one of this node's ports changes. |
| RemoveFromGraph | Removes the node from its graph. |
Interfaces
Interface | Description |
|---|---|
| Node.IOptionDefinitionContext | Interface that provides methods to declare node options inside a node. |
| Node.IPortDefinitionContext | Interface that provides methods to define input and output ports during Node.OnDefinePorts execution. |