Add relations to a Custom C# node
Note
To add logic to a node, you must create a Custom C# node and add ports. The examples below are based on the previous examples for a Custom C# node. For more information, see Create a new simple Custom C# node.
After you add ports and add logic to a node, relations help Visual Scripting correctly display a Custom C# node in a Script Graph.
To add relations to a node:
Go to Window > General > Project, or press Ctrl+5 (macOS: Cmd+5) to open the Project window.
Double-click the C# file. Unity opens the file in the program you specified in your preferences, under External Script Editor.
Note
For more information on script editors in Unity, see the Integrated development environment (IDE) support in the Unity User Manual.
In your external editor, add relations in the format
$RelationType$($Port1$, $Port2$)
, where$RelationType$
is the relation type you want to assign between the ports you specify as$Port1$
or$Port2$
.For example, to assign relations to the previous example node:
using System; using Unity.VisualScripting; using UnityEngine; public class MyNode : Unit { [DoNotSerialize] public ControlInput inputTrigger; [DoNotSerialize] public ControlOutput outputTrigger; [DoNotSerialize] public ValueInput myValueA; [DoNotSerialize] public ValueInput myValueB; [DoNotSerialize] public ValueOutput result; private string resultValue; protected override void Definition() { inputTrigger = ControlInput("inputTrigger", (flow) => { resultValue = flow.GetValue<string>(myValueA) + flow.GetValue<string>(myValueB) + "!!!"; return outputTrigger; }); outputTrigger = ControlOutput("outputTrigger"); myValueA = ValueInput<string>("myValueA", "Hello "); myValueB = ValueInput<string>("myValueB", String.Empty); result = ValueOutput<string>("result", (flow) => resultValue); Requirement(myValueA, inputTrigger); //Specifies that we need the myValueA value to be set before the node can run. Requirement(myValueB, inputTrigger); //Specifies that we need the myValueB value to be set before the node can run. Succession(inputTrigger, outputTrigger); //Specifies that the input trigger port's input exits at the output trigger port. Not setting your succession also dims connected nodes, but the execution still completes. Assignment(inputTrigger,result);//Specifies that data is written to the result string output when the inputTrigger is triggered. } }
For more information on relation types, see Custom C# nodes.
Save your script file.
Return to the Unity Editor.
Do one of the following:
- Open a Script Graph where you've already added your node..
- Right-click anywhere in the Graph Editor to open the fuzzy finder. Then, select your node in the fuzzy finder to add it to your graph.
In the Graph toolbar, enable Relations.
Visual Scripting displays the relations you assigned to the Custom C# node. If you used the previous code sample, the node's relations might look like the following image:
Next steps
After you add relations to a node, you can choose to add documentation or customize the node with attributes.