private void HideLayerViews(LayerTransform layerTransform) { for (int i = layerTransform.viewList.Count - 1; i >= 0; i--) { View view = layerTransform.viewList[i]; if (view.transform == null || !view.transform.gameObject.activeSelf) { continue; } view.transform.gameObject.SetActive(false); layerTransform.viewList.RemoveAt(i); if (view.config.hideRule == ViewHideRule.SaveToStack) { Stack <View> stack; if (!viewShowStackMap.TryGetValue(view.config.layer, out stack)) { stack = new Stack <View>(); viewShowStackMap.Add(view.config.layer, stack); } stack.Push(view); } else if (view.config.hideRule == ViewHideRule.DestroyAsset) { view.DestroyAsset(); } } }
internal void ShowView(View view) { int index = viewLayerList.FindIndex((item) => item.layer == view.config.layer); if (index == -1) { Debug.LogWarningFormat("Show view {0} failed! Have not include layer {1}", view.config.viewName, view.config.layer); return; } LayerTransform layerTransform = viewLayerList[index]; switch (view.config.showRule) { case ViewShowRule.HideSameLayerView: HideLayerViews(layerTransform); break; case ViewShowRule.HideLowLayerView: for (int i = index; i >= 0; i--) { HideLayerViews(viewLayerList[i]); } break; } if (view.transform.parent == viewLayerList[index].transform) { view.transform.SetAsLastSibling(); } else { view.transform.SetParent(viewLayerList[index].transform, false); } view.transform.gameObject.SetActive(true); layerTransform.viewList.Add(view); }