/// <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; } }
/// <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; //增加层深 } }
/// <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; } }
/// <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(); }
/// <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,请检查!"); } }