Пример #1
0
        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;
            }
        }
Пример #2
0
 public void OpenWindow(UISettings.UIWindowID id, bool needTransform, System.Action onComplate, params object[] data)
 {
     SetWindowState(id, true);
     queue.Enqueue(() =>
     {
         StartOpenWindow(id, needTransform, onComplate, data);
     });
 }
Пример #3
0
 private void SetWindowState(UISettings.UIWindowID id, bool state)
 {
     if (!windowsState.ContainsKey(id))
     {
         windowsState.Add(id, state);
     }
     else
     {
         windowsState[id] = state;
     }
 }
Пример #4
0
    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);
        }
    }
Пример #5
0
    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;
        }
    }
Пример #6
0
    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));
            });
        }
    }
Пример #7
0
 public void CloseWindow(UISettings.UIWindowID id)
 {
     CloseWindow(id, true);
 }
Пример #8
0
 public void OpenWindow(UISettings.UIWindowID id, bool needTransform, params object[] data)
 {
     OpenWindow(id, needTransform, null, data);
 }
Пример #9
0
 public void OpenWindow(UISettings.UIWindowID id, params object[] data)
 {
     OpenWindow(id, true, data);
 }