public NodeManager Clone() { NodeManager clone = ScriptableObject.CreateInstance <NodeManager>(); clone.Init(); clone.nodeID = nodeID; foreach (BehaviourTree.Node node in nodes) { clone.nodes.Add(NodeManager.Clone <BehaviourTree.Node>(node)); } foreach (BehaviourTree.Node node in clone.nodes) { if (null != node.parent) { node.parent = clone.FindNode(node.parent.id); } for (int i = 0; i < node.children.Count; i++) { BehaviourTree.Node child = node.children[i]; node.children[i] = clone.FindNode(child.id); } } return(clone); }
void Load(string path) { NodeManager tmp = AssetDatabase.LoadAssetAtPath(path, typeof(NodeManager)) as NodeManager; AIEditorWindow.manager = tmp.Clone(); }