namespace UIWidgets.Examples { using UIWidgets; using UnityEngine; /// /// Create TreeView data from hierarchy. /// public class TreeViewDataFromHierarchy : MonoBehaviour { /// /// TreeView. /// public TreeView TreeView; /// /// Process the start event. /// public virtual void Start() { AllGameObjects(); } /// /// Show all gameobjects in TreeView. /// public void AllGameObjects() { TreeView.Nodes = Hierarchy2Data(); } /// /// Show nested gameobjects in TreeView. /// /// Parent. public void NestedGameObject(Transform parent) { TreeView.Nodes = Hierarchy2Data(parent); } ObservableList> Hierarchy2Data() { var nodes = new ObservableList>(); var roots = UnityEngine.SceneManagement.SceneManager.GetActiveScene().GetRootGameObjects(); foreach (var go in roots) { var item = new TreeViewItem(go.name); item.Tag = go; var node = new TreeNode(item); node.Nodes = Hierarchy2Data(go.transform); nodes.Add(node); } return nodes; } ObservableList> Hierarchy2Data(Transform source) { var nodes = new ObservableList>(); for (int i = 0; i < source.childCount; i++) { var child = source.GetChild(i); var item = new TreeViewItem(child.name); item.Tag = child.gameObject; var node = new TreeNode(item); node.Nodes = Hierarchy2Data(child); nodes.Add(node); } return nodes; } } }