/// <summary> /// 回收组件,取出两个场景同时存在的舞台组件,转移到新的场景,老的清除 /// </summary> /// <param name="stage"></param> public virtual void RecoverStagePart(AbstractStage stage) { //遍历自身元件列表,找对方也有的 foreach (string path in m_pathList) { if (stage.uiStageParts.ContainsKey(path)) { //取出对方的组件,删除 BaseStagePart part = stage.uiStageParts[path]; stage.uiStageParts.Remove(path); //放入自身的组件列表中 if (this.uiStageParts.ContainsKey(path)) { continue; } this.uiStageParts.Add(path, part); //Log.info("回收组件" + part.getViewName()); } } }
protected BaseStagePart AddUiPart(string path, int depth) { if (!uiStageParts.ContainsKey(path)) { GameObject prefab = ResDataManager.instance.GetObjectFromLocalPrefab(path, true); //TODO 缓存 prefab if (prefab == null || StageManager.root == null) { Log.infoError("BaseStage AddUiPart error:" + (prefab == null ? " 场景不存在 " : "") + (StageManager.root == null ? " StageManager.root不存在 " : "") + " path:" + path); return(null); } GameObject go = NGUITools.AddChild(this.gameObj, prefab); BaseStagePart part = go.GetComponent <BaseStagePart>(); if (part) { //Log.info(Application.loadedLevelName+" addUIPart : " + path); //part.GetComponent<UIPanel>().depth = depth; uiStageParts.Add(path, part); part.Show(); return(part); } else { throw new Exception("组件没有挂载UIStagePart脚本" + path); } } else { BaseStagePart part = this.uiStageParts[path].gameObject.GetComponent <BaseStagePart>(); //part.GetComponent<UIPanel>().depth = depth; //执行初始化 uiStageParts[path].Init(); } return(uiStageParts[path]); }