예제 #1
0
    /// <summary>
    /// 关闭UI
    /// </summary>
    /// <param name="_lancherUIType"></param>
    public void Close(CodeBridgeTool.EnumPreWindow _lancherUIType)
    {
        GameObject window;

        if (opendWindow.TryGetValue(_lancherUIType, out window))
        {
            //TODO 打开和关闭可能太消耗性能 这里是未来的性能优化点
            window.SetActive(false);
        }
        else
        {
            Debug.LogWarning("尝试关闭一个从未打开的面板!" + _lancherUIType);
        }
    }
예제 #2
0
    /// <summary>
    /// 按照配置打开界面
    /// 并且按照配置设置层级
    /// </summary>
    public GameObject Open(CodeBridgeTool.EnumPreWindow _lancherUIType)
    {
        GameObject window;

        if (!opendWindow.TryGetValue(_lancherUIType, out window))
        {
            window = LoadWindow(_lancherUIType);

            var layer = LancherLayer.Top;

            if (this.lancherUILayerDic.TryGetValue(_lancherUIType, out layer))
            {
                var uiTransform = window.transform as RectTransform;

                switch (layer)
                {
                case LancherLayer.Bottom:
                    uiTransform.SetParent(CanvasBottomTransform);
                    break;

                case LancherLayer.Top:
                    uiTransform.SetParent(CanvasTopTransform);
                    uiTransform.SetAsLastSibling();
                    break;

                default:
                    break;
                }

                uiTransform.sizeDelta     = Vector2.zero;
                uiTransform.localPosition = Vector3.zero;
                uiTransform.localScale    = Vector3.one;

                opendWindow.Add(_lancherUIType, window);
            }
            else
            {
                throw new Exception("需要配置lancherUI的层级");
            }
        }
        //TODO 打开和关闭可能太消耗性能 这里是未来的性能优化点
        window.SetActive(true);

        return(window);
    }
예제 #3
0
    /// <summary>
    /// 通过Resource加载Lancher中的UI
    /// </summary>
    /// <param name="_lancherUIType"></param>
    /// <returns></returns>
    private GameObject LoadWindow(CodeBridgeTool.EnumPreWindow _lancherUIType)
    {
        string loadPath;

        if (lancherUIPathDic.TryGetValue(_lancherUIType, out loadPath))
        {
            if (string.IsNullOrEmpty(loadPath))
            {
                throw new Exception("加载路径获取到的为空" + _lancherUIType);
            }

            var prefab = Resources.Load(loadPath) as GameObject;

            if (prefab != null)
            {
                var result = Object.Instantiate(prefab);

                if (result)
                {
                    return(result);
                }
                else
                {
                    throw new Exception("神奇的问题,加载成功但是竟然未能初始化成功!" + loadPath);
                }
            }
            else
            {
                throw new Exception("在Resource中未能成功加载" + loadPath);
            }
        }
        else
        {
            throw new Exception("在Lancher中加载未发现合适的路径配置!" + _lancherUIType);
        }
    }