精华内容
下载资源
问答
  • UE4 CanvasUI遮罩

    2018-05-30 16:42:23
    UE4 CanvasUI遮罩UE4 CanvasUI遮罩UE4 CanvasUI遮罩UE4 CanvasUI遮罩UE4 CanvasUI遮罩UE4 CanvasUI遮罩
  • 精灵遮罩: 一个SpriteRenderer,用作显示图形,一个SpriteMask用作控制图形显示区域 ...UI遮罩: 将遮罩需要显示的区域设置为父物体,将遮罩显示的图片设置为子物体,在父物体上添加Mask组件 遮罩显示为父物体形状下的

    精灵遮罩:

    一个SpriteRenderer,用作显示图形,一个SpriteMask用作控制图形显示区域

    在SpriteRenderer中选择MaskInteraction遮罩类型

    None-不遮罩

    Visible Inside Mask-遮罩区域的图形显示,遮罩以外的图形隐藏

    Visible Outside Mask-,遮罩区域的图形隐藏,遮罩以外的图形显示

    UI遮罩:

    将遮罩需要显示的区域设置为父物体,将遮罩显示的图片设置为子物体,在父物体上添加Mask组件

    遮罩显示为父物体形状下的子物体

    展开全文
  • Unity3D UI遮罩和弹窗

    千次阅读 2019-12-10 19:48:49
    详细讲解篇幅可能有点长,直接上图和资源(实现的具体步骤往下看) GIF图看起来有点卡顿,实际上运行是流畅的。 ... 具体实现步骤 ...1.创建一个背景图片Background...3.创建一个弹窗的遮罩蒙版 名为Alert的Image,参数...

    详细讲解篇幅可能有点长,直接上图和资源(实现的具体步骤往下看)

    GIF图看起来有点卡顿, 实际上运行是流畅的。

    码云:https://gitee.com/NCAA_admin/Alert.git

    具体实现步骤

    1.创建一个背景图片Background并设置相应属性值

    2.设置Canvas的属性和Game窗口的比例

    3.创建一个弹窗的遮罩蒙版 名为Alert的Image,参数设置如下

    4.在Alert下创建一个弹出的信息框 名为Message的Image,各参数设置如下

    5.在Message下创建一个文本对象 Text,参数设置如下

    6.接在也在Alert下创建两个按钮 Confirm和Cancel

    7.其中两个按钮的Text参数分别如下

    8.创建一个Shader的蒙版,在Assets下创建Shaders文件夹,在Shaders文件夹下创建名为Blur的Shader脚本

    10.Shader脚本,内容如下(关于Shader的实现原理和步骤,有时间再做一个专题的解析)

    // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
    
    Shader "Custom/Blur"
    {
    	// 属性
    	Properties
    	{
    		// 定义 1-255 范围的半径 默认 1
    		_Radius("Radius", Range(1, 255)) = 1
    	}
    
    	Category
    	{
    		Tags{ "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Opaque" }
    
    		SubShader
    	{
    
    	GrabPass
    	{
    		Tags{ "LightMode" = "Always" }
    	}
    
    	Pass
    	{
    		Tags{ "LightMode" = "Always" }
    		
    		CGPROGRAM
    		#pragma vertex vert
    		#pragma fragment frag
    		#pragma fragmentoption ARB_precision_hint_fastest
    		#include "UnityCG.cginc"
    
    	struct appdata_t
    	{
    		float4 vertex : POSITION;
    		float2 texcoord: TEXCOORD0;
    	};
    
    	struct v2f
    	{
    		float4 vertex : POSITION;
    		float4 uvgrab : TEXCOORD0;
    	};
    
    	v2f vert(appdata_t v)
    	{
    		v2f o;
    		o.vertex = UnityObjectToClipPos(v.vertex);
    #if UNITY_UV_STARTS_AT_TOP
    		float scale = -1.0;
    #else
    		float scale = 1.0;
    #endif
    		o.uvgrab.xy = (float2(o.vertex.x, o.vertex.y*scale) + o.vertex.w) * 0.5;
    		o.uvgrab.zw = o.vertex.zw;
    		return o;
    	}
    
    	sampler2D _GrabTexture;
    	float4 _GrabTexture_TexelSize;
    	float _Radius;
    
    	half4 frag(v2f i) : COLOR
    	{
    		half4 sum = half4(0,0,0,0);
    
    #define GRABXYPIXEL(kernelx, kernely) tex2Dproj( _GrabTexture, UNITY_PROJ_COORD(float4(i.uvgrab.x + _GrabTexture_TexelSize.x * kernelx, i.uvgrab.y + _GrabTexture_TexelSize.y * kernely, i.uvgrab.z, i.uvgrab.w)))
    
    		sum += GRABXYPIXEL(0.0, 0.0);
    		int measurments = 1;
    
    		for (float range = 0.1f; range <= _Radius; range += 0.1f)
    		{
    			sum += GRABXYPIXEL(range, range);
    			sum += GRABXYPIXEL(range, -range);
    			sum += GRABXYPIXEL(-range, range);
    			sum += GRABXYPIXEL(-range, -range);
    			measurments += 4;
    		}
    
    		return sum / measurments;
    	}
    		ENDCG
    	}
    		GrabPass
    	{
    		Tags{ "LightMode" = "Always" }
    	}
    
    		Pass
    	{
    		Tags{ "LightMode" = "Always" }
    
    		CGPROGRAM
    #pragma vertex vert
    #pragma fragment frag
    #pragma fragmentoption ARB_precision_hint_fastest
    #include "UnityCG.cginc"
    
    		struct appdata_t
    	{
    		float4 vertex : POSITION;
    		float2 texcoord: TEXCOORD0;
    	};
    
    	struct v2f
    	{
    		float4 vertex : POSITION;
    		float4 uvgrab : TEXCOORD0;
    	};
    
    	v2f vert(appdata_t v)
    	{
    		v2f o;
    		o.vertex = UnityObjectToClipPos(v.vertex);
    #if UNITY_UV_STARTS_AT_TOP
    		float scale = -1.0;
    #else
    		float scale = 1.0;
    #endif
    		o.uvgrab.xy = (float2(o.vertex.x, o.vertex.y*scale) + o.vertex.w) * 0.5;
    		o.uvgrab.zw = o.vertex.zw;
    		return o;
    	}
    
    	sampler2D _GrabTexture;
    	float4 _GrabTexture_TexelSize;
    	float _Radius;
    
    	half4 frag(v2f i) : COLOR
    	{
    
    		half4 sum = half4(0,0,0,0);
    		float radius = 1.41421356237 * _Radius;
    
    #define GRABXYPIXEL(kernelx, kernely) tex2Dproj( _GrabTexture, UNITY_PROJ_COORD(float4(i.uvgrab.x + _GrabTexture_TexelSize.x * kernelx, i.uvgrab.y + _GrabTexture_TexelSize.y * kernely, i.uvgrab.z, i.uvgrab.w)))
    
    		sum += GRABXYPIXEL(0.0, 0.0);
    		int measurments = 1;
    
    		for (float range = 1.41421356237f; range <= radius * 1.41; range += 1.41421356237f)
    		{
    			sum += GRABXYPIXEL(range, 0);
    			sum += GRABXYPIXEL(-range, 0);
    			sum += GRABXYPIXEL(0, range);
    			sum += GRABXYPIXEL(0, -range);
    			measurments += 4;
    		}
    
    		return sum / measurments;
    	}
    		ENDCG
    	}
    	}
    	}
    }

    11.在Assets下创建一个名Materials文件夹,在Materials文件夹下创建名为MaskBlur的Material材质

    12.在Alert下指定MaskBlur材质,并设置材质的模糊值为5

    13.为了使交互效果具有动画的过度感,在编辑器顶部的菜单栏中 Windows>Asset Store 下打开资源商店

    14.搜索DoTween关键词,并进入下载

    15.下载完成后点击导入即可

    16.在Assets下创建Scripts文件夹,在Scripts下创建Alert.cs脚本

    17.Alert.cs脚本内容

    using UnityEngine;
    using DG.Tweening;
    using UnityEngine.UI;
    using UnityEngine.EventSystems;
    //显示Alert会话
    public class Alert : MonoBehaviour
    {
        public static Alert Instance;
        private void Awake()
        {
            Instance = this;
        }
        [Tooltip("会话对象")] public RectTransform m_alert;
        //获取ui blur(alert)初始大小
        private Vector2 _uiBlurSize;
        //获取ui blur(alert)初始scale
        private Vector2 _uiBlurScale;
        //透明遮罩层
        private RectTransform _transparentMask;
        //透明遮罩层的初始颜色值值
        private Color _transparentMaskColor;
        //获取confirm
        private RectTransform _confirm;
        //获取confirm初始大小
        private Vector2 _confirmSize;
        //获取confirm初始scale
        private Vector2 _confirmScale;
        //获取text对象
        private Text _text;
        //获取text的大小
        private Vector2 _textSize;
        //获取text scale
        private Vector2 _textScale;
        void Start()
        {
            //判断并且赋值
            if (!m_alert)
            {
                m_alert = transform.GetComponent<RectTransform>();
            }
            //获取uiblur(alert)初始大小
            _uiBlurSize = m_alert.rect.size;
            _uiBlurScale = m_alert.localScale;
            //获取透明遮罩层
            _transparentMask = m_alert.GetChild(0).GetComponent<RectTransform>();
            //透明遮罩层的颜色
            _transparentMaskColor = _transparentMask.GetComponent<Image>().color;
            //获取confirm
            _confirm = m_alert.GetChild(1).GetComponent<RectTransform>();
            //获取confirm初始大小
            _confirmSize = _confirm.rect.size;
            _confirmScale = _confirm.localScale;
            //获取text对象
            _text = _confirm.GetChild(0).GetComponent<Text>();
            //获取text的大小
            _textSize = _text.GetComponent<RectTransform>().rect.size;
            _textScale = _text.rectTransform.localScale;
            //确定取消按钮
            _Confirm();
            _Cancel();
            //初始设置隐藏
            if (m_hideOnStart)
                _SetHideImmediate();
        }
    
        /// <summary>
        /// 无动画立即隐藏
        /// </summary>
        public void _SetHideImmediate()
        {
            //设置隐藏
            m_alert.gameObject.SetActive(false);
            _confirm.gameObject.SetActive(false);
            _text.gameObject.SetActive(false);
            _transparentMask.gameObject.SetActive(false);
            //宽高设置0
            m_alert.DOScale(Vector3.zero, 0);
            _confirm.DOScale(Vector3.zero, 0);
            //设置遮罩层alpha = 0
            _transparentMask.GetComponent<Image>().DOFade(0, 0);
        }
        /// <summary>
        /// 开始时为隐藏状态
        /// </summary>
        [Tooltip("开始时为隐藏状态")]
        public bool m_hideOnStart = true;
        /// <summary>
        /// 隐藏
        /// </summary>
        public void _SetHide()
        {
            //设置隐藏
            _text.gameObject.SetActive(false);
            //宽高设置0
            m_alert.DOScale(Vector2.zero, _SetShow_duration)
                .onComplete = () =>
                {
                    m_alert.gameObject.SetActive(false);
                };
            _confirm.DOScale(Vector2.zero, _SetShow_duration)
                .onComplete = () =>
                {
                    _confirm.gameObject.SetActive(false);
                };
            //隐藏透明遮罩层
            _transparentMask.GetComponent<Image>().DOFade(0, _SetShow_duration)
                .onComplete = () =>
                {
                    _transparentMask.gameObject.SetActive(false);
                };
        }
        /// <summary>
        /// 显示
        /// </summary>
        public void _SetShow()
        {
            //设置显示
            m_alert.gameObject.SetActive(true);
            _confirm.gameObject.SetActive(true);
            _transparentMask.gameObject.SetActive(true);
            //宽高设置成初始大小+5%再回到原来的大小
            m_alert.DOScale(_uiBlurScale + _uiBlurScale * 0.05f, _SetShow_duration)
                .onComplete = () =>
                {
                    //完成后回到初始大小 时间为原来的1/5
                    m_alert.DOScale(_uiBlurScale, _SetShow_duration / 5f);
                };
            _confirm.DOScale(_confirmScale + _confirmScale * 0.05f, _SetShow_duration)
                .onComplete = () =>
                {
                    //完成后回到初始大小 时间为原来的1/5
                    _confirm.DOScale(_confirmScale, _SetShow_duration / 5f);
                    //并且显示text
                    _text.gameObject.SetActive(true);
                };
            //显示透明遮罩层
            _transparentMask.GetComponent<Image>().DOFade(_transparentMaskColor.a, _SetShow_duration);
        }
        /// <summary>
        /// 显示动画时间
        /// </summary>
        private float _SetShow_duration = 0.3f;
    
        /// <summary>
        /// 按钮的hover效果
        /// </summary>
        /// <param name="button">按钮</param>
        public void _OnHover(Transform button)
        {
            if (!m_inited)
            {
                m_inited = true;
                //获取初始大小
                m_initialScale = transform.GetComponent<RectTransform>().localScale.x;
            }
            if (!button.GetComponent<EventTrigger>()) button.gameObject.AddComponent<EventTrigger>();
            EventTrigger trigger = button.GetComponent<EventTrigger>();
            EventTrigger.Entry entry = new EventTrigger.Entry();
            entry.eventID = EventTriggerType.PointerEnter;
            entry.callback = new EventTrigger.TriggerEvent();
            entry.callback.AddListener(delegate (BaseEventData baseEvent) {
                button.GetComponent<RectTransform>().DOScale(m_localScale, 0.3f);
            });
            trigger.triggers.Add(entry);
    
            EventTrigger.Entry entry2 = new EventTrigger.Entry();
            entry2.eventID = EventTriggerType.PointerExit;
            entry2.callback = new EventTrigger.TriggerEvent();
            entry2.callback.AddListener(delegate (BaseEventData baseEvent) {
                button.GetComponent<RectTransform>().DOScale(m_initialScale, 0.3f);
            });
            trigger.triggers.Add(entry2);
        }
        /// <summary>
        /// 变大尺度默认1
        /// </summary>
        [Tooltip("变大尺度默认1.2f")]
        public float m_localScale = 1.2f;
        /// <summary>
        /// 初始的大小
        /// </summary>
        private float m_initialScale;
        /// <summary>
        /// 是否被初始化
        /// </summary>
        private bool m_inited = false;
    
        /// <summary>
        /// 确定
        /// </summary>
        public void _Confirm()
        {
            _OnHover(m_confirm);
            m_confirm.GetComponent<Button>().onClick.AddListener(delegate {
                _SetHide();
            });
        }
        /// <summary>
        /// 确定按钮
        /// </summary>
        [Tooltip("确定按钮")]
        public Transform m_confirm;
        /// <summary>
        /// 取消按钮
        /// </summary>
        public void _Cancel()
        {
            _OnHover(m_cancel);
            m_cancel.GetComponent<Button>().onClick.AddListener(delegate {
                _SetHide();
            });
        }
        [Tooltip("取消按钮")]
        public Transform m_cancel;
    
    }
    

    18.将Alert.cs脚本拖拽到Alert对象上,并分别将Confirm和Cancel对象拖拽到Alert对应的组件上

    19.再在Assets>Scripts文件夹下新建键盘事件的脚本 KeyEvent.cs

    20.KeyEvent.cs脚本内容

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class KeyEvent : MonoBehaviour
    {
        /// <summary>
        /// 获取Alert组件
        /// </summary>
        private Alert alert;
        void Start()
        {
            //实例化组件
            alert = Alert.Instance;
        }
    
        void Update()
        {
            //键盘事件
            _KeyDown();
        }
    
        /// <summary>
        /// 按下键盘执行
        /// </summary>
        public void _KeyDown()
        {
            if (Input.GetKeyDown(KeyCode.Escape))
            {
                alert._SetShow();
            }
        }
    
    }
    

    21.在Hierarchy下新建一个脚本管理器的空物体Script,并将KeyEvent.cs脚本附在其上

    22.为了让Hierarchy下的组件的层次更加明显,分别新建了三个空物体,具体如下

    23.最后运行游戏,按下Esc键弹出信息框

    结束:GIF效果图请看文章顶部!

    展开全文
  • 当换出遮罩时,上下滑动依然可以滑动遮罩底部内容 此时给遮罩的view标签增加catchtouchmove=“return”,就可以防止穿透遮罩问题。

    在这里插入图片描述
    当换出遮罩时,上下滑动依然可以滑动遮罩底部内容
    此时给遮罩的view标签增加catchtouchmove=“return”,就可以防止穿透遮罩问题。

    展开全文
  • 那么当我们遇到,弹窗里有弹窗,而且里面的弹窗没有遮罩层的z-index属性大时,就会出现里面弹层内的内容被遮罩层挡住的问题,如果我们让遮罩层加在body上,有点不好控制z-index属性,如果让加在el-dialog的父元素里...

    template

    点击打开 Dialog

    title="提示":visible.sync="dialogVisible"width="80%"

    :append-to-body="true"

    :before-close="handleClose":close-on-click-modal="false">

    这是一段信息

    取 消

    确 定

    data

    dialogVisible:false,

    methods

    closeShadow(){this.dialogVisible=false;

    },

    handleClose(done) {this.$confirm('确认关闭?')

    .then(_=>{

    done();

    })

    .catch(_ =>{});

    }

    close-on-click-modal:是否可以通过点击 modal 关闭 Dialog  默认值为true

    另外上面有一个属性还比较有用:

    :modal-append-to-body='true'  是否将遮罩层添加在body元素里,如果为false就是插在el-dialog的父级元素里,

    那么当我们遇到,弹窗里有弹窗,而且里面的弹窗没有遮罩层的z-index属性大时,就会出现里面弹层内的内容被遮罩层挡住的问题,如果我们让遮罩层加在body上,有点不好控制z-index属性,如果让加在el-dialog的父元素里,我们在当前组件就可以控制这一个遮罩成的z-index属性,

    .thisDialog{z-index:200 !important;

    }.app-container >>> .v-modal{z-index:199 !important;

    }

    展开全文
  • Easy UI 遮罩(MASK)

    2018-02-16 06:10:46
    Easy UI 的各类控件有些带了遮罩功能,如 DataGrid,可以这样使用://显示遮罩$("#dg").datagrid("loading", "数据加载中……");//隐藏遮罩$("#dg").datagrid("loaded...
  • Unity Shader - 实现类似UI遮罩流光

    千次阅读 2019-08-12 00:01:39
    准备流光遮罩图 主要显示纹理 流光图(我用GIMP随便画的,还是PS好用) 流光遮罩图 主纹理 先是实现流光划过 但是这样太丑了 所以我们还是对流光部分应用在需要流光上的像素 加上遮罩后,就是最...
  • Jquery-UI 遮罩

    2016-04-19 10:17:41
    jQuery UI Dialog - Basic modal                          Adding the modal overlay screen makes the dialog look more prominent because it dims out the page content. Sed ...
  • NULL 博文链接:https://xinjiatao.iteye.com/blog/2338004
  • Dialog 的外层布局的 position 值为 fixed, absolute, relative 三者之一时,就会出现被蒙板遮住的情况。 解决: // 在 el-dialog 标签里添加 :append-to-body="true" <!-- 编辑弹出框 -->...
  • Unity5的unitypackage 利用UI Mask 实现对Sprite精灵遮罩处理。不是插件
  • LigerUi遮罩的两个方法

    2019-01-11 15:08:00
    $.ligerDialog.waitting('正在查询,请稍候...'); $.ligerDialog.close(); 转载于:https://www.cnblogs.com/rdchen/p/10255224.html
  • Unity VR UI遮罩问题

    2020-02-28 17:43:23
    记录: 解决方法: (PlayerSettings (Android) -> Other Settings -> Virtual Reality SDKs -> Cardboard) 设置 depth format 为 “24-bit depth | 8-bit stencil”
  • Semantic UI遮罩

    2020-08-12 15:33:41
    页面代码结构 页面代码 <!DOCTYPE html> <html lang="en"> <head> <...遮罩层<...link rel="stylesheet" href="semantic-ui/semantic/dist/semantic.min.css"> <scrip
  • Easy UI 遮罩

    2014-02-18 10:52:19
    Easy UI 的各类控件有些带了遮罩功能,如 DataGrid,可以这样使用: //显示遮罩 $("#dg").datagrid("loading", "数据加载中……"); //隐藏遮罩 $("#dg").datagrid("loaded"); 在有些情况下,我们不能...
  • 主要为大家详细介绍了Unity3D Shader实现动态屏幕遮罩效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • UGUI做的反向遮罩,导入资源资源包即可使用,适应于新手引导及各种场合,有什么需要请在下方留言,更多有趣资源请关注我的博客
  • 在utils下创建loading.js import Vue from 'vue' // loading框设置局部刷新,且所有... setTimeout(function (){ vue.showLoad(tar) },200) 参考:Element UI 框架中Loading 区域加载的使用方法_Geek-Haoyu-CSDN博客
  • Unity UI篇 使用遮罩显示一部分

    千次阅读 2018-10-22 22:52:51
    当做ui的时候 有时候会做在某个范围内用鼠标滑动其它范围不显示 首先放入图片 然后再在canvas里面放入遮罩 遮罩就是一张image 将内容放入遮罩 随后在遮罩里放入scroll rect。指定滑动内容是遮罩下的...
  • jQuery BlockUI 插件(遮罩层)源代码 博文地址:http://blog.csdn.net/evangel_z/article/details/51123612
  • //app.vue中写入,全局修改,透明度不用改 .v-modal { background-color: #000!important; }
  • modal-append-to-body 遮罩层是否插入至 body 元素上,若为 false,则遮罩层会插入至 Dialog 的父元素上 boolean — true append-to-body Dialog 自身是否插入至 body 元素上。嵌套的 Dialog 必须指定该属性并赋值为...
  • 最近在使用vue+element-ui的过程中,发现el-dialog经常被遮罩层遮住的问题,解决方法: el-dialog标签里面添加 :append-to-body="true" <el-dialog title="测试" :visible.sync="dialogVisible" width="60...
  • UGUI的粒子效果(UI粒子) :warning: 注意:不要使用来引用程序包。 它们将在不久的将来被删除。 :warning: 该插件提供了一个组件,可在Unity 2018.2或更高版本中为uGUI渲染粒子效果。 粒子渲染是可蒙版且可排序...
  • 由图所示,其中UI 中间是空的。其他地方是黑色的。而Unity的遮罩组件Mask是无法实现这个效果的。所以查找了一些资源。最后发现… 不需要编写额外的shader和任何代码,只使用自带的功能就可以实现完美的反向遮罩的...
  • element ui 弹出组件的遮罩层以及多层遮罩解决办法

    万次阅读 多人点赞 2019-09-25 18:13:39
    做项目中遇到几次弹出框遮罩层的问题。有嵌套的 弹出框。还有单页面中tabs标签页的弹出框。今天就说一下tabs中的弹出框遮罩层的问题。 这个页面有五个tabs页签,每一个都有弹出框组件,也就是说每一个都有遮罩层。 ...
  • 在Unity中UGUI的Mask遮罩无法对Partice System(粒子)起到直接的作用,于是这里我们使用Shader来实现UI Mask对粒子的遮罩效果。关于粒子显示在同一层两个不同UI之间叠加的问题: 实现方案 首先使用一张image图片...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,354
精华内容 3,741
关键字:

UI遮罩