private void ClearAllPanel(UIDisplayControl ctrl) { if (ctrl == null) { return; } if (!ctrl.ClearOpened) { return; } for (int i = 0; i < OpenedUIList.Count; i++) { GameObject panel = OpenedUIList[i]; // 不存在的跳过 if (!panel) { continue; } UIPanelBehaviour script = panel.GetComponent <UIPanelBehaviour>(); // 已关闭的跳过 if (!script.GetActiveSelf()) { continue; } // 关闭该界面 StartCoroutine(ClosePanel(script, false)); } OpenedUIList.Clear(); ClosedUIList.Clear(); }
public void KillEnemy(EnemyBehaviour enemy) { if (Enemies.Contains(enemy)) { Enemies.Remove(enemy); } LevelStats.KilledEnemy++; UIPanelBehaviour.SetWaveProgress(LevelStats.KilledEnemy, LevelStats.LevelDefinition.TotalEnemy); InitEnemyWave(); }
private void CloseAllPanel(params string[] dontCloseUIName) { List <GameObject> list = new List <GameObject>(); for (int i = 0; i < OpenedUIList.Count; i++) { GameObject panel = OpenedUIList[i]; // 不存在的跳过 if (!panel) { continue; } UIPanelBehaviour script = panel.GetComponent <UIPanelBehaviour>(); // 已关闭的跳过 if (!script.GetActiveSelf()) { continue; } // 过滤 bool b = false; for (int k = 0; k < dontCloseUIName.Length; k++) { if (panel.name == dontCloseUIName[k]) { b = true; break; } } if (b) { continue; } // 关闭该界面 StartCoroutine(ClosePanel(script, false)); // 加入到关闭表内 list.Add(OpenedUIList[i]); } // 把该阶段的界面加入关闭表 if (list.Count > 0) { ClosedUIList.Add(list); } // 把关闭的UI从打开表内清除 for (int i = 0; i < list.Count; i++) { if (OpenedUIList.Contains(list[i])) { OpenedUIList.Remove(list[i]); } } }
public override void Kill() { ShipStats.Health -= 1; UIPanelBehaviour.SetHealth(ShipStats.Health, false); if (ShipStats.Health == 0) { ScreenManager.ActiveLoseScreen(); LevelManager.OnEndLevel(); gameObject.SetActive(false); return; } StartCoroutine(ShipRendererBehaviour.AnimColor(Color.red)); }
private IEnumerator OnShowPanel(UIPanelBehaviour behaviour, object[] args) { string uiName = behaviour.name; UIDisplayControl ctrl = GlobalConfig.GetUIDisplayControl(uiName); ClearAllPanel(ctrl); string dontCloseUI = ctrl != null ? ctrl.DontClose : string.Empty; if (dontCloseUI != "All" && !string.IsNullOrEmpty(dontCloseUI)) { CloseAllPanel(dontCloseUI.Split(',')); } StartCoroutine(behaviour.Show(args)); OpenedUIList.Add(behaviour.gameObject); ShowUIListContent(); yield return(null); }
/// <summary> /// Show the panel with the given id /// </summary> /// <param name="id">EnumUi id</param> /// <param name="timeIndependantRendering">set true to do rendering without animations</param> public static void RenderPanel(EnumUI id, bool timeIndependantRendering = false) { ScriptableUIPanel panel = Array.Find(instance.panelsArray, UIPanel => UIPanel.id == id); if (!instance.loadedPanels.ContainsKey(id)) { GameObject spawnedPanel = Instantiate(panel.panelPrefab, instance.containerTransform); UIPanelBehaviour uiPanelBehaviour = panel.uiPanelBehaviour; uiPanelBehaviour.panel = spawnedPanel; uiPanelBehaviour.canvasGroup = spawnedPanel.gameObject.GetComponent <CanvasGroup>(); instance._animationStartCanvasGroup = uiPanelBehaviour.canvasGroup; instance.loadedPanels.Add(panel.id, uiPanelBehaviour); instance.loadedPanels[id].EnumUiState = EnumUIState.Rendering; spawnedPanel.SetActive(true); spawnedPanel.transform.localScale = Vector3.one; spawnedPanel.transform.SetAsLastSibling(); if (!timeIndependantRendering) { instance.AnimateStart(spawnedPanel, panel.startAnimation); } instance.renderingPanelsStack.Push(panel.id); } else if (instance.loadedPanels[id].EnumUiState == EnumUIState.Hidden) { GameObject loadedPanel = instance.loadedPanels[id].panel; instance._animationStartCanvasGroup = instance.loadedPanels[id].canvasGroup; instance._animationStartCanvasGroup.alpha = 1f; instance.loadedPanels[id].EnumUiState = EnumUIState.Rendering; loadedPanel.SetActive(true); loadedPanel.transform.localScale = Vector3.one; loadedPanel.transform.SetAsLastSibling(); if (!timeIndependantRendering) { instance.AnimateStart(loadedPanel, panel.startAnimation); } instance.renderingPanelsStack.Push(panel.id); } else if (instance.loadedPanels[id].EnumUiState == EnumUIState.Rendering) { Debug.Log("The panel " + panel.panelName + " is already Rendering"); } }
private IEnumerator OnClosePanel(UIPanelBehaviour script, bool bPlaySound) { bool bActive = script.GetActiveSelf(); if (!bActive) { yield break; } yield return(StartCoroutine(ClosePanel(script, bPlaySound))); OpenedUIList.RemoveAt(OpenedUIList.Count - 1); string uiName = script.name; UIDisplayControl ctrl = GlobalConfig.GetUIDisplayControl(uiName); if (ctrl != null) { if (ctrl.JustCloseSelfWhenClosing) { yield break; } } if (ClosedUIList.Count <= 0) { yield break; } List <GameObject> lastClosedUIList = ClosedUIList[ClosedUIList.Count - 1]; for (int i = 0; i < lastClosedUIList.Count; i++) { GameObject panel = lastClosedUIList[i]; if (!panel) { continue; } UIPanelBehaviour panelScript = panel.GetComponent <UIPanelBehaviour>(); StartCoroutine(panelScript.ReShow()); OpenedUIList.Add(panel); } ClosedUIList.RemoveAt(ClosedUIList.Count - 1); ShowUIListContent(); }
private IEnumerator ClosePanel(UIPanelBehaviour script, bool bPlaySound, bool bDelay = true) { yield return(StartCoroutine(script.Close(bPlaySound, bDelay))); }