public void Open(NavigationObject obj) { if (CurrentArea != null && CurrentArea.AreaName == obj.AreaName) { return; } if (CurrentArea != null) { nextAreas.Add(obj); NextArea = GameObject.Instantiate(GetAreaReferenceFromName(obj.AreaName)); NextArea.Init(obj.Params); Close(); return; } history.Add(obj); if (NextArea != null) { CurrentArea = NextArea; } else { CurrentArea = GameObject.Instantiate(GetAreaReferenceFromName(obj.AreaName)); CurrentArea.Init(obj.Params); } NextArea = null; //SimpleTimer.StartTimer (0.1f, delegate() { CurrentArea.transform.SetParent(areaTarget.transform); CurrentArea.transform.position = Vector3.zero; CurrentArea.GetComponent <Image>().rectTransform.offsetMin = new Vector2(0, 0); CurrentArea.GetComponent <Image>().rectTransform.offsetMax = new Vector2(0, 0); CurrentArea.OnNavigationEven += CurrentArea_OnNavigationEven; CurrentArea.transform.localScale = Vector3.one; CurrentArea.Open(); //}); }
void CurrentArea_OnNavigationEven(AreaState state, BaseArea area) { switch (state) { case AreaState.startOpen: break; case AreaState.endOpen: break; case AreaState.startClose: break; case AreaState.endClose: CurrentArea.OnNavigationEven -= CurrentArea_OnNavigationEven; Destroy(CurrentArea.gameObject); CurrentArea = null; if (nextAreas.Count > 0) { NavigationObject next = nextAreas[0]; nextAreas.RemoveAt(0); Open(next); } break; } if (OnNavigationEvent != null) { OnNavigationEvent(state, area); } }