Once imported, make sure to import the free SerializeReference Extensions tool by MackySoft, as this is required for ReturnGraph to work.
If you have Odin Inspector by Sirenix installed in your project, this step can be skipped, as Odin Inspector can handle the serialization of interfaces instead.
To create a new graph, right-click in the project panel and select Create > ReturnGraph > New ReturnGraph, or find the top menu and select Tools > ReturnGraph > New ReturnGraph.

Once the graph opens, multiple warnings or errors will appear in the console. These are INTENDED, and serve as validation warnings to ensure your graph has all the necessary nodes and port connections to function correctly.
Press the space bar or right-click in the graph view and select Add Node to open the Item Library, which contains a list of nodes available for ReturnGraph. Select the StartNode to add it to the graph.
The StartNode informs the graph where to begin its execution. Every graph must have exactly one StartNode. The StartNode has one output port that must be connected to another node.

Next, open the Item Library and add a ConditionNode. This node acts like an “if” statement for the graph, evaluating criteria at runtime to direct the flow of the graph. The ConditionNode has one input port that connects to a previous node, and two output ports labeled “True” and “False”. In addition, the ConditionNode has a node option for an RgCondition, which is a customizable Scriptable Object that handles the conditional logic for the node and tells the node to draw additional input ports for any parameters required.

ReturnGraph comes pre-packaged with several RgConditions for evaluating primitive types like integers, floats, booleans, and strings. ReturnGraph also comes with RgConditions for more complex evaluations, like detecting a specific Component type on a GameObject, comparing random floats and integers to a value, and more. When an RgCondition is added to a ConditionNode, it will draw the necessary input ports for the condition to work. From there, you may customize the node’s parameters or connect variable nodes to any given input ports to provide values for them at runtime.

The ConditionNode displayed here has an “Input Int Condition,” which compares an integer variable provided at runtime to another integer.