Example #1
0
    /// <summary>
    /// 取消遮罩面板
    /// </summary>
    public void CancelMaskWindow(BaseUIForms goDisplayUIForm)
    {
        //顶层面板上移
        _GoTopPanel.transform.SetAsFirstSibling();
        //移除遮罩窗体
        GameObject maskPanel = null;

        if (_DicCurFormMaskPanel.TryGetValue(goDisplayUIForm.GetWinType(), out maskPanel))
        {
            GameObject.Destroy(maskPanel);
            _DicCurFormMaskPanel.Remove(goDisplayUIForm.GetWinType());
        }
        //打开上层遮罩
        if (_DicCurFormMaskPanel.Count > 0)
        {
            int index = 0;
            foreach (var item in _DicCurFormMaskPanel)
            {
                if (index == _DicCurFormMaskPanel.Count - 1)
                {
                    item.Value.SetActive(true);
                    break;
                }
                index++;
            }
        }


        //恢复UI摄像机层深
        if (_UICamera != null)
        {
            //设置层深
            _UICamera.depth = _OriginalUICameraDepth;
        }
        else
        {
            Debug.LogError(GetType() + "UI摄像机为null,请检查!");
        }
    }
Example #2
0
    /// <summary>
    /// 设置遮罩面板
    /// </summary>
    /// <param name="goDisplayUIForm">需要显示的UI窗体</param>
    /// <param name="lucencyType">透明度属性</param>
    public void SetMaskWindow(BaseUIForms goDisplayUIForm, UIFormLucencyType lucencyType = UIFormLucencyType.Lucency)
    {
        //顶层面板下移
        _GoTopPanel.transform.SetAsLastSibling();       //下移
        //上层的遮罩给隐藏掉
        if (_DicCurFormMaskPanel.Count > 0)
        {
            foreach (var item in _DicCurFormMaskPanel)
            {
                item.Value.SetActive(false);
            }
        }
        //clone遮罩窗体
        GameObject maskPanel = null;

        if (!_DicCurFormMaskPanel.TryGetValue(goDisplayUIForm.GetWinType(), out maskPanel))
        {
            maskPanel = Instantiate(_GoMaskPanel, _GoMaskPanel.transform.parent);
            _DicCurFormMaskPanel.Add(goDisplayUIForm.GetWinType(), maskPanel);
        }
        maskPanel.name = "MaskPanel_" + goDisplayUIForm.name;
        //启用遮罩窗体以及设置透明度
        switch (lucencyType)
        {
        case UIFormLucencyType.Lucency:                 //完全透明 不能穿透
            maskPanel.SetActive(true);
            Color newColor1 = new Color32(255, 255, 255, 1);
            maskPanel.GetComponent <Image>().color = newColor1;
            break;

        case UIFormLucencyType.Translucency:            //半透明  不能穿透
            maskPanel.SetActive(true);
            Color newColor2 = new Color32(255, 255, 255, 150);
            maskPanel.GetComponent <Image>().color = newColor2;
            break;

        case UIFormLucencyType.ImPeneterabla:           //低透明度 不能穿透
            maskPanel.SetActive(true);
            Color newColor3 = new Color32(255, 255, 255, 100);
            maskPanel.GetComponent <Image>().color = newColor3;
            break;

        case UIFormLucencyType.Pentrate:                //完全透明 能穿透
            if (maskPanel.activeInHierarchy)
            {
                maskPanel.SetActive(false);
            }
            break;

        default:
            break;
        }

        //遮罩窗体下移
        maskPanel.transform.SetAsLastSibling();      //遮罩的窗体下移,可以实现把前面的UI窗体防止穿透,下面的显示UI窗体也下移,但是它比遮罩面板晚下移,所以它还是会在遮罩面板的下面,这样子遮罩面板就不会挡住显示的UI窗体
        //显示的UI窗体下移
        goDisplayUIForm.transform.SetAsLastSibling();
        //设置摄像机层深(保证UI摄像机始终在最前面)
        if (_UICamera != null)
        {
            _UICamera.depth += 100;
        }
        else
        {
            Debug.LogError(GetType() + "UI摄像机为null,请检查!");
        }
    }