public void CloseUIPanel(string PanelName) { GameObject Panel = UIPanels[PanelName]; if (Panel.activeInHierarchy == false) { return; } PendingOldPanel = PanelName; MovingObjects.Clear(); foreach (Transform child in Panel.transform) { GameObject ChildObject = child.gameObject; if (ChildObject.tag == "Fade") { FadingObjects.Add(new FadingUIObject(ChildObject, false, 0.1f)); } else { Vector2 Target = GetObjectSlideTarget(ChildObject); MovingObjects.Add(new MovingUIObject(ChildObject, Target, 20f)); } } State = UIAnimationStates.ClearingPanel; }
// Use this for initialization void Start() { UIPanels = new Dictionary <string, GameObject>(); Transform Canvas = GameObject.Find("UICanvas").GetComponent <Transform>(); for (int i = 0; i < Canvas.childCount; i++) { Transform T = Canvas.GetChild(i); GameObject UIPanel = T.gameObject; UIPanels.Add(UIPanel.name, UIPanel); if (UIPanel.name == "MainMenuPanel") { UIPanel.SetActive(true); } else { UIPanel.SetActive(false); } } GoldText = GameObject.Find("GoldText").GetComponent <Text>(); //this panel is disabled, so a little extra work is needed TimerFG = GetNamedObject(UIPanels["GamePanel"], "TimerFG"); TimerText = GetNamedObject(UIPanels["GamePanel"], "TimerText"); MovingObjects = new List <MovingUIObject>(); FinishedObjects = new List <MovingUIObject>(); FadingObjects = new List <FadingUIObject>(); FinishedFadingObjects = new List <FadingUIObject>(); State = UIAnimationStates.Default; //GoldText.text = "" + PlayerPrefs.GetInt("Coins"); //EmeraldText.text = "" + PlayerPrefs.GetInt("Emeralds"); HeartObjects = new List <GameObject>(); }
// Update is called once per frame void Update() { switch (State) { case UIAnimationStates.Default: return; case UIAnimationStates.ClearingPanel: { foreach (MovingUIObject O in new List <MovingUIObject>(MovingObjects)) { O.Update(); if (O.Completed) { MovingObjects.Remove(O); FinishedObjects.Add(O); } } foreach (FadingUIObject O in new List <FadingUIObject>(FadingObjects)) { O.Update(); if (O.Completed) { FadingObjects.Remove(O); FinishedFadingObjects.Add(O); } } if (MovingObjects.Count == 0 && FadingObjects.Count == 0) { foreach (MovingUIObject O in FinishedObjects) { O.Dispose(); } FinishedObjects.Clear(); foreach (FadingUIObject O in FinishedFadingObjects) { O.Dispose(); } FinishedFadingObjects.Clear(); GameObject Panel = UIPanels[PendingNewPanel]; foreach (Transform child in Panel.transform) { GameObject ChildObject = child.gameObject; if (ChildObject.tag == "Fade") { FadingObjects.Add(new FadingUIObject(ChildObject, true, 0.1f)); } else { Vector2 NewPos = GetObjectSlideTarget(ChildObject); Vector2 Target = new Vector2(ChildObject.transform.localPosition.x, ChildObject.transform.localPosition.y); ChildObject.transform.localPosition = new Vector3(NewPos.x, NewPos.y, 0); MovingObjects.Add(new MovingUIObject(ChildObject, Target, 20f)); } } UIPanels[PendingOldPanel].SetActive(false); UIPanels[PendingNewPanel].SetActive(true); State = UIAnimationStates.OpeningPanel; } break; } case UIAnimationStates.OpeningPanel: { foreach (MovingUIObject O in new List <MovingUIObject>(MovingObjects)) { O.Update(); if (O.Completed) { MovingObjects.Remove(O); } } foreach (FadingUIObject O in new List <FadingUIObject>(FadingObjects)) { O.Update(); if (O.Completed) { O.Dispose(); FadingObjects.Remove(O); } } if (MovingObjects.Count == 0 && FadingObjects.Count == 0) { State = UIAnimationStates.Default; } break; } } }