Skip to content


The Tree class allows to create acyclic dependency graphs that start from a root node and end with leaf nodes. A single node can have an unlimited number of branches.

To create a Tree, inherit from the Tree<T> class, where T is the value type of the node. For example, to create a tree of game objects:

public MyTree : Tree<GameObject>
{ }
public MyComponent : MonoBehaviour
    public MyTree tree = new MyTree();

    private void Awake()
        // Add element:

        foreach (var child in this.tree)
            // Print child id:

            // Print child game object:

A Tree<T> class is both the tree and the node class. So any child of a tree returns a tree object too. A tree can return its parent:

MyTree parent = this.tree.Parent

And it's children, which is a dictionary indexed by its Ids:

KeyValuePair<string, GameObject> = this.tree.Children;
Back to top