コード例 #1
0
    /// <summary>
    /// 设置遮罩状态
    /// </summary>
    /// <param name="goDisplayUIForms">需要显示的UI窗体</param>
    /// <param name="lucencyType">透明度属性</param>
    public void SetMaskWindow(GameObject goDisplayUIForms, UIFormLucencyType lucencyType = UIFormLucencyType.Luceny)
    {
        //顶层窗体下移
        _goTopPanel.transform.SetAsLastSibling();
        //启用遮罩并设置透明度
        switch (lucencyType)
        {
        //完全透明,不能穿透
        case UIFormLucencyType.Luceny:
            _goMaskPanel.SetActive(true);
            Color newColor1 = new Color(SysDefine.SYS_UIMASK_LUCENCY_COLOR_RGB,
                                        SysDefine.SYS_UIMASK_LUCENCY_COLOR_RGB,
                                        SysDefine.SYS_UIMASK_LUCENCY_COLOR_RGB,
                                        SysDefine.SYS_UIMASK_LUCENCY_COLOR_RGB_A);
            _goMaskPanel.GetComponent <Image>().color = newColor1;
            break;

        //半透明,不能穿透
        case UIFormLucencyType.TransLucence:
            _goMaskPanel.SetActive(true);
            Color newColor2 = new Color(SysDefine.SYS_UIMASK_TRANS_LUCENCY_COLOR_RGB,
                                        SysDefine.SYS_UIMASK_TRANS_LUCENCY_COLOR_RGB,
                                        SysDefine.SYS_UIMASK_TRANS_LUCENCY_COLOR_RGB,
                                        SysDefine.SYS_UIMASK_TRANS_LUCENCY_COLOR_RGB_A);
            _goMaskPanel.GetComponent <Image>().color = newColor2;
            break;

        //低透明,不能穿透
        case UIFormLucencyType.ImPenetrable:
            _goMaskPanel.SetActive(true);
            Color newColor3 = new Color(SysDefine.SYS_UIMASK_IMPENETRABLE_COLOR_RGB,
                                        SysDefine.SYS_UIMASK_IMPENETRABLE_COLOR_RGB,
                                        SysDefine.SYS_UIMASK_IMPENETRABLE_COLOR_RGB,
                                        SysDefine.SYS_UIMASK_IMPENETRABLE_COLOR_RGB_A);
            _goMaskPanel.GetComponent <Image>().color = newColor3;
            break;

        //可以穿透
        case UIFormLucencyType.Penetra:
            if (_goMaskPanel.activeInHierarchy)
            {
                _goMaskPanel.SetActive(false);
            }
            break;

        default:
            break;
        }
        //遮罩窗体下移
        _goMaskPanel.transform.SetAsLastSibling();
        //显示窗体下移
        goDisplayUIForms.transform.SetAsLastSibling();
        //增加当前UI摄像机的景深,确保当前摄像机为最前显示
        if (_uiCamera != null)
        {
            _uiCamera.depth += 100;
        }
    }
コード例 #2
0
        /// <summary>
        /// 设置遮罩状态
        /// </summary>
        /// <param name="goDisplayUIForms">需要显示的UI窗体</param>
        /// <param name="lucenyType">显示透明度属性</param>
        public void SetMaskWindow(GameObject goDisplayUIForms, UIFormLucencyType lucencyType = UIFormLucencyType.Lucency)
        {
            //顶层窗体下移
            _GoTopPanel.transform.SetAsLastSibling();
            //启用遮罩窗体以及设置透明度
            switch (lucencyType)
            {
            //完全透明,不能穿透
            case UIFormLucencyType.Lucency:
                _GoMaskPanel.SetActive(true);
                Color newColor1 = new Color(SysDefine.SYS_UIMASK_LUCENCY_COLOR_RGB, SysDefine.SYS_UIMASK_LUCENCY_COLOR_RGB, SysDefine.SYS_UIMASK_LUCENCY_COLOR_RGB, SysDefine.SYS_UIMASK_LUCENCY_COLOR_A);
                _GoMaskPanel.GetComponent <Image>().color = newColor1;
                break;

            //半透明,不能穿透
            case UIFormLucencyType.Translucence:
                _GoMaskPanel.SetActive(true);
                Color newColor2 = new Color(SysDefine.SYS_UIMASK_TRANSLUCENCY_COLOR_RGB, SysDefine.SYS_UIMASK_TRANSLUCENCY_COLOR_RGB, SysDefine.SYS_UIMASK_TRANSLUCENCY_COLOR_RGB, SysDefine.SYS_UIMASK_TRANSLUCENCY_COLOR_A);
                _GoMaskPanel.GetComponent <Image>().color = newColor2;
                break;

            //低透明,不能穿透
            case UIFormLucencyType.ImPenetrable:
                _GoMaskPanel.SetActive(true);
                Color newColor3 = new Color(SysDefine.SYS_UIMASK_IMPENETRABLE_COLOR_RGB, SysDefine.SYS_UIMASK_IMPENETRABLE_COLOR_RGB, SysDefine.SYS_UIMASK_IMPENETRABLE_COLOR_RGB, SysDefine.SYS_UIMASK_IMPENETRABLE_COLOR_A);
                _GoMaskPanel.GetComponent <Image>().color = newColor3;
                break;

            //可以穿透
            case UIFormLucencyType.Pentrate:
                if (_GoMaskPanel.activeInHierarchy)
                {
                    _GoMaskPanel.SetActive(false);
                }
                break;
            }

            //遮罩窗体下移
            _GoMaskPanel.transform.SetAsLastSibling();
            //显示窗体的下移
            goDisplayUIForms.transform.SetAsLastSibling();
            //增加当前UI摄像机的层深(保证当前摄像机为最前显示)
            if (_UICamera != null)
            {
                _UICamera.depth = _UICamera.depth + SysDefine.SYS_UICAMERA_DEPTH_INCREMENT;    //增加层深
            }
        }
コード例 #3
0
        /// <summary>
        /// 设置遮罩状态
        /// </summary>
        /// <param name="goDisplayUIForms">显示窗体</param>
        /// <param name="lucencyType">显示透明度属性</param>
        public void SetMaskWindow(GameObject goDisplayUIForms, UIFormLucencyType lucencyType = UIFormLucencyType.Lucency)
        {
            //顶层窗体下移
            _GoTopPanel.transform.SetAsLastSibling();
            //启用遮罩窗体以及设置透明度
            switch (lucencyType)
            {
            //完全透明,不能穿透
            case UIFormLucencyType.Lucency:
                _GoMaskPanel.SetActive(true);
                Color color = new Color(255 / 255F, 255 / 255F, 255 / 255F, 0 / 255F);      //遮罩窗体颜色 可以自行调整
                _GoMaskPanel.GetComponent <Image>().color = color;
                break;

            //半透明 不能穿透
            case UIFormLucencyType.Translucency:
                _GoMaskPanel.SetActive(true);
                Color color2 = new Color(220 / 255F, 220 / 255F, 220 / 255F, 50 / 255F);
                _GoMaskPanel.GetComponent <Image>().color = color2;
                break;

            //低透明 不能穿透
            case UIFormLucencyType.ImPenetrable:
                _GoMaskPanel.SetActive(true);
                Color color3 = new Color(50 / 255F, 50 / 255F, 50 / 255F, 200 / 255F);
                _GoMaskPanel.GetComponent <Image>().color = color3;
                break;

            //可以穿透
            case UIFormLucencyType.Pentrate:
                _GoMaskPanel.SetActive(false);
                break;

            default:
                break;
            }
            //遮罩窗体下移
            _GoMaskPanel.transform.SetAsLastSibling();
            //显示窗体下移
            goDisplayUIForms.transform.SetAsLastSibling();
            //增加当前UI摄像机的层深(保证当前摄像机为最前显示)
            if (_UICamera != null)
            {
                _UICamera.depth += 100;
            }
        }
コード例 #4
0
        /// <summary>
        /// 设置遮罩状态
        /// </summary>
        /// <param name="goDisplayUIForms">需要显示的UI窗体</param>
        /// <param name="lucenyType">显示透明度属性</param>
        internal void SetMaskWindow(GameObject goDisplayUIForms, UIFormLucencyType lucenyType = UIFormLucencyType.Lucency)
        {
            maskPanel.transform.SetParent(goDisplayUIForms.transform.parent);
            maskPanel.transform.SetAsLastSibling();
            //启用遮罩窗体以及设置透明度
            switch (lucenyType)
            {
            case UIFormLucencyType.Lucency:
                maskPanel.SetActive(true);
                //Color newColor1 = new Color(0, 0, 0, 0F / 255F);
                maskPanel.GetComponent <Image>().color = SystemDefine.LucencyColor;
                break;

            case UIFormLucencyType.Translucence:
                maskPanel.SetActive(true);
                // Color newColor2 = new Color(0, 0, 0, 50 / 255F);
                maskPanel.GetComponent <Image>().color = SystemDefine.TranslucenceColor;
                break;

            case UIFormLucencyType.ImPenetrable:
                maskPanel.SetActive(true);
                // Color newColor3 = new Color(0, 0, 0, 200F / 255F);
                maskPanel.GetComponent <Image>().color = SystemDefine.ImPenetrableColor;
                break;

            case UIFormLucencyType.Pentrate:
                if (maskPanel.activeInHierarchy)
                {
                    maskPanel.SetActive(false);
                }
                break;

            default:
                break;
            }
            maskPanel.transform.SetAsLastSibling();
            goDisplayUIForms.transform.SetAsLastSibling();
        }
コード例 #5
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,请检查!");
        }
    }