public void RecursiveExecute(PanelTreeInterface node, UIFadeIteratorFunc nodeFunc, UIFadeIteratorFunc finishFunc) { nodeFunc(node); if (node.IsLeaf()) { finishFunc(node); } else { foreach (PanelTreeInterface child in node.childrenDictionary.Values) { RecursiveExecute(child, nodeFunc, finishFunc); } } }
/// <summary> /// 递归初始化 /// </summary> /// <param name="node">当前节点</param> public void RecursiveInit(PanelTreeInterface node) { node.Init(); if (node.IsLeaf()) { return; } else { foreach (PanelTreeInterface child in node.childrenDictionary.Values) { RecursiveInit(child); } } }
private void BuildTreeTable(PanelTreeInterface node, List <string> pathArr) { pathArr.Add(node.name); pathTable.Add(node.name, pathArr); satellightTable.Add(node.name, node); if (node.IsLeaf()) { return; } else { foreach (PanelTreeInterface child in node.childrenDictionary.Values) { BuildTreeTable(child, new List <string>(pathArr)); } } }
// Use this for initialization public void Init() { root = GameObject.Find("UI Root"); //搜索到所有的Panel原件 panels = new Dictionary <string, GameObject>(); for (int i = 0; i < PANEL_NAMES.Count; i++) { GameObject panelObj = root.transform.Find(PANEL_NAMES[i] + "_Panel").gameObject; panels.Add(PANEL_NAMES[i], panelObj); } //游戏初始界面打开情况 //current = "Logo"; currentPanelPath = new List <string>() { "UI Root", "Logo_Panel" }; try { PanelTreeInterface rt = root.GetComponent <PanelTreeInterface>(); iterator = new FadeTreeIterator(rt); iterator.Init(); //Debug.Log("打印Panel树"); //iterator.PrintTree(); } catch (Exception e) { if (e.GetType() == typeof(NullReferenceException)) { string emsg = string.Format("未找到TreeInterface组件!请检查 {0}!", name); Debug.LogError(emsg); } else { Debug.LogError(e); } } }
public void RecursiveExecute(PanelTreeInterface node, UIFadeIteratorFunc func) { RecursiveExecute(node, func, func); }
public FadeTreeIterator(PanelTreeInterface root) { this.root = root; }