private IEnumerator ConfigureWindow(GameObject go, UISettings.UIWindowID id, bool needTransform = true, System.Action onComplate = null, params object[] data) { UIWindowBase window; allWindows.TryGetValue(id, out window); if (window == null) { GameObject windowGO = GameObject.Instantiate(go); windowGO.name = id.ToString(); windowGO.layer = LayerMask.NameToLayer("UI"); windowGO.SetActive(false); window = windowGO.GetComponent <UIWindowBase>(); UIWindowData windowData = window.windowData; if (windowData.id != id) { Debug.LogError("加载的window id和目标id不符"); } allWindows.Add(windowData.id, window); } RectTransform rt = window.transform as RectTransform; switch (window.windowData.type) { case UISettings.UIWindowType.Fixed: window.gameObject.transform.SetParent(FixedRoot); rt.anchorMin = Vector2.zero; rt.anchorMax = Vector2.one; rt.offsetMin = Vector2.zero; rt.offsetMax = Vector2.one; break; case UISettings.UIWindowType.PopUp: window.transform.SetParent(PopUpRoot); break; case UISettings.UIWindowType.Cover: window.transform.SetParent(CoverRoot); rt.anchorMin = Vector2.zero; rt.anchorMax = Vector2.one; rt.offsetMin = Vector2.zero; rt.offsetMax = Vector2.one; break; } window.transform.localPosition = Vector3.zero; window.transform.localScale = Vector3.one; //(window.transform as RectTransform).anchoredPosition = Vector2.zero; window.Init(); yield return(null); if (windowsState[id]) { StartOpenWindow(id, needTransform, onComplate, data); } else { isOpening = false; } }
public void OpenWindow(UISettings.UIWindowID id, bool needTransform, System.Action onComplate, params object[] data) { SetWindowState(id, true); queue.Enqueue(() => { StartOpenWindow(id, needTransform, onComplate, data); }); }
private void SetWindowState(UISettings.UIWindowID id, bool state) { if (!windowsState.ContainsKey(id)) { windowsState.Add(id, state); } else { windowsState[id] = state; } }
public void CloseWindow(UISettings.UIWindowID id, bool needTransform = true, System.Action onComplate = null) { SetWindowState(id, false); UIWindowBase window; allWindows.TryGetValue(id, out window); if (window != null) { if (showingWindows.ContainsKey(id)) { showingWindows.Remove(id); } popupCollider.GetComponent <FadeIn>().to = 0; window.HideWindow(() => { UIWindowData windowdata = window.windowData; if (windowdata.type == UISettings.UIWindowType.Fixed) { } else if (windowdata.type == UISettings.UIWindowType.PopUp) { curPopUpWindow = null; popupCollider.SetActive(false); for (int i = PopUpRoot.childCount - 1; i >= 0; i--) { Transform tf = PopUpRoot.GetChild(i); if (tf.gameObject.activeSelf) { UIWindowBase wd = tf.GetComponent <UIWindowBase>(); if (wd != null) { popupCollider.SetActive(true); curPopUpWindow = wd; popupCollider.transform.SetSiblingIndex(Mathf.Max(0, i - 1)); break; } } } } else if (windowdata.type == UISettings.UIWindowType.Normal) { hideNavigationWindow(window); } if (onComplate != null) { onComplate(); } }, needTransform); } }
private void ShowGuide(GuideData guideData, Interactable interactable) { switch (guideData.actionType) { case GuideData.ActionType.click: uiManager.OpenWindow(UISettings.UIWindowID.UIGuideWindow, false, interactable); break; case GuideData.ActionType.tips: uiManager.OpenWindow(UISettings.UIWindowID.UIGuideTipsWindow, guideData.content); break; case GuideData.ActionType.open: UISettings.UIWindowID id = (UISettings.UIWindowID)System.Enum.Parse(typeof(UISettings.UIWindowID), guideData.content); uiManager.OpenWindow(id); break; } }
private void StartOpenWindow(UISettings.UIWindowID id, bool needTransform = true, System.Action onComplate = null, params object[] data) { isOpening = true; UIWindowBase window; allWindows.TryGetValue(id, out window); if (window != null) { if (!window.canOpen) { isOpening = false; return; } UIWindowData windowdata = window.windowData; if (windowdata.type == UISettings.UIWindowType.Fixed) { //window.transform.SetSiblingIndex(FixedRoot.childCount); SetSiblingIndex(window, FixedRoot); } else if (windowdata.type == UISettings.UIWindowType.PopUp) { curPopUpWindow = window; popupCollider.SetActive(true); popupCollider.transform.SetAsLastSibling(); SetSiblingIndex(window, PopUpRoot); //popupCollider.transform.SetSiblingIndex(PopUpRoot.childCount); // window.transform.SetSiblingIndex(PopUpRoot.childCount); if (window.windowData.colliderType == UISettings.UIWindowColliderType.Transparent) { popupCollider.GetComponent <Image>().color = new Color(0.8f, 0.8f, 0.8f, 0f); } else { popupCollider.GetComponent <Image>().color = new Color(0, 0, 0, 0f); popupCollider.GetComponent <FadeIn>().to = 0.4f; } //popupCollider.GetComponent<Image>().color = new Color(0.8f,0.8f,0.8f,0.5f); } else if (windowdata.type == UISettings.UIWindowType.Normal) { SetSiblingIndex(window, NormalRoot); //window.transform.SetSiblingIndex(NormalRoot.childCount); showNavigationWindow(window); } else if (windowdata.type == UISettings.UIWindowType.Cover) { SetSiblingIndex(window, coverRoot); //window.transform.SetSiblingIndex(coverRoot.childCount); } if (!showingWindows.ContainsKey(id)) { showingWindows.Add(id, window); } isOpening = false; StartCoroutine(window.ShowWindow(() => { if (onComplate != null) { onComplate(); } }, needTransform, data)); } else { string path = FilePathTools.getUIPath(UISettings.getWindowName(id)); AssetBundleLoadManager.Instance.LoadAsset <GameObject>(path, (go) => { StartCoroutine(ConfigureWindow(go, id, needTransform, onComplate, data)); }); } }
public void CloseWindow(UISettings.UIWindowID id) { CloseWindow(id, true); }
public void OpenWindow(UISettings.UIWindowID id, bool needTransform, params object[] data) { OpenWindow(id, needTransform, null, data); }
public void OpenWindow(UISettings.UIWindowID id, params object[] data) { OpenWindow(id, true, data); }