Unity UGUI的Mask(遮罩)组件的介绍及使用
Unity UGUI的Mask(遮罩)组件的介绍及使用
1. 什么是Mask组件?
Mask(遮罩)组件是Unity UGUI中的一个重要组件,用于限制子对象的可见区域。通过设置遮罩组件,可以实现一些特殊效果,如显示部分图片、裁剪文本等。
2. Mask组件的工作原理
Mask组件通过将子对象与遮罩对象进行比较,只显示与遮罩对象重叠的部分,从而实现遮罩效果。遮罩对象可以是任意形状的UI元素,如Image、RawImage等。
3. Mask组件的常用属性
- Show Mask Graphic:是否显示遮罩对象的图形。
- Mask Interaction:遮罩对象的交互方式,可选择None、Visible Inside Mask和Visible Outside Mask。
- Alpha Cutoff:遮罩对象的透明度阈值,用于控制遮罩的显示范围。
4. Mask组件的常用函数
- IsRaycastLocationValid:判断指定位置是否在遮罩范围内。
- GetModifiedMaterial:获取经过遮罩处理后的材质。
5. 示例代码
示例1:显示部分图片
using UnityEngine;
using UnityEngine.UI;
public class ImageMaskExample : MonoBehaviour
{
public Image mask;
public RawImage image;
void Start()
{
mask.sprite = Resources.Load<Sprite>("MaskImage");
image.texture = Resources.Load<Texture>("Image");
image.transform.SetParent(mask.transform);
mask.GetComponent<Mask>().showMaskGraphic = false;
}
}
操作步骤:
- 创建一个Image对象作为遮罩对象,设置其形状为圆形。
- 创建一个RawImage对象作为子对象,设置其图片为需要显示的图片。
- 将遮罩对象和子对象添加到Canvas中。
- 将子对象的父对象设置为遮罩对象。
- 设置Mask组件的Show Mask Graphic属性为false。
示例2:裁剪文本
using UnityEngine;
using UnityEngine.UI;
public class TextMaskExample : MonoBehaviour
{
public Text mask;
public Text text;
void Start()
{
mask.text = "Mask Text";
text.text = "Hello World";
text.transform.SetParent(mask.transform);
mask.GetComponent<Mask>().showMaskGraphic = false;
}
}
操作步骤:
- 创建一个Text对象作为遮罩对象,设置其文本内容。
- 创建一个Text对象作为子对象,设置其文本内容。
- 将遮罩对象和子对象添加到Canvas中。
- 将子对象的父对象设置为遮罩对象。
- 设置Mask组件的Show Mask Graphic属性为false。
示例3:动态遮罩
using UnityEngine;
using UnityEngine.UI;
public class DynamicMaskExample : MonoBehaviour
{
public Image mask;
public RawImage image;
void Start()
{
mask.sprite = Resources.Load<Sprite>("MaskImage");
image.texture = Resources.Load<Texture>("Image");
image.transform.SetParent(mask.transform);
mask.GetComponent<Mask>().showMaskGraphic = false;
// 动态修改遮罩对象的形状
mask.rectTransform.sizeDelta = new Vector2(200, 200);
}
}
操作步骤:
- 创建一个Image对象作为遮罩对象,设置其形状为矩形。
- 创建一个RawImage对象作为子对象,设置其图片为需要显示的图片。
- 将遮罩对象和子对象添加到Canvas中。
- 将子对象的父对象设置为遮罩对象。
- 在代码中动态修改遮罩对象的形状。
示例4:遮罩交互
using UnityEngine;
using UnityEngine.UI;
public class InteractionMaskExample : MonoBehaviour
{
public Image mask;
public RawImage image;
void Start()
{
mask.sprite = Resources.Load<Sprite>("MaskImage");
image.texture = Resources.Load<Texture>("Image");
image.transform.SetParent(mask.transform);
mask.GetComponent<Mask>().showMaskGraphic = false;
mask.GetComponent<Mask>().maskInteraction = MaskInteraction.VisibleInsideMask;
}
}
操作步骤:
- 创建一个Image对象作为遮罩对象,设置其形状为圆形。
- 创建一个RawImage对象作为子对象,设置其图片为需要显示的图片。
- 将遮罩对象和子对象添加到Canvas中。
- 将子对象的父对象设置为遮罩对象。
- 设置Mask组件的Mask Interaction属性为Visible Inside Mask。
示例5:透明度阈值
using UnityEngine;
using UnityEngine.UI;
public class AlphaCutoffMaskExample : MonoBehaviour
{
public Image mask;
public RawImage image;
void Start()
{
mask.sprite = Resources.Load<Sprite>("MaskImage");
image.texture = Resources.Load<Texture>("Image");
image.transform.SetParent(mask.transform);
mask.GetComponent<Mask>().showMaskGraphic = false;
mask.GetComponent<Mask>().alphaCutoff = 0.5f;
}
}
操作步骤:
- 创建一个Image对象作为遮罩对象,设置其形状为矩形。
- 创建一个RawImage对象作为子对象,设置其图片为需要显示的图片。
- 将遮罩对象和子对象添加到Canvas中。
- 将子对象的父对象设置为遮罩对象。
- 设置Mask组件的Alpha Cutoff属性为0.5。
6. 注意事项
- 遮罩对象和子对象需要添加到同一个Canvas中。
- 子对象的父对象必须设置为遮罩对象。
- 遮罩对象的形状可以通过修改RectTransform的sizeDelta属性来调整。
- 遮罩对象的形状可以是任意形状的UI元素,如Image、RawImage等。
7. 参考资料
- Unity官方文档:Mask
- Unity官方论坛:UGUI Mask组件使用教程
Unity UGUI的Mask(遮罩)组件的介绍及使用的更多相关文章
- Unity UGUI Layout自动排版组件用法介绍
Unity UGUI布局组件 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享 ...
- Unity UGUI
超详细的基础教程传送门:(持续更新中) Unity UGUI之Canvas&EventSystem:http://blog.csdn.net/qq992817263/article/detai ...
- 关于 Unity UGUI 中修改 Mask 组件下 Image 等子节点组件的材质无效的问题
前几天同事做了一个效果,希望在原本使用了遮罩组件 Mask 的技能图标(让技能图标变成圆形)上在添加一个置灰的功能,但问题来了:因为是动态根据游戏中玩家的条件才动态置灰,以修改 Mask 下子节点 I ...
- 画地为Mask,随心所欲的高效遮罩组件[Unity]
在上一篇博文"扔掉遮罩,更好的圆形Image组件"中,笔者改变Image的顶点数据,使得Image呈圆形显示,避免了Mask的使用,从而节省Drawcall消耗,提高渲染效率了.这 ...
- vux 中popup 组件 Mask 遮罩在最上层问题的解决
1. 问题描述:popup弹出层在遮罩层下面的 2.原因:因为滚动元素和mask遮罩层在同一级,vux框架默认把遮罩层放在body标签下的 3.解决方法:更改一下源码,把mask遮罩层放在popup同 ...
- vue----子组件引用vux popup mask遮罩在最上层解决办法 z-index问题
在一个页面的子组件中引用vux的popup组件时,出现mask遮罩在最上层的问题,百度了一下发现有两种解决办法,现提供第三种. popup在子组件引用时,vux将vux-popup-mask默认添加到 ...
- Unity UGUI —— 无限循环List
还记得大学毕业刚工作的时候是做flash的开发,那时候看到别人写的各种各样的UI组件就非常佩服,后来自己也慢慢尝试着写,发现其实也就那么回事.UI的开发其实技术的成分相对来说不算多,但是一个好的UI是 ...
- [Unity UGUI]ScrollRect效果大全
UGUI各种优化效果 本文所实现的UGUI效果需求如下: - 支持缩放滑动效果 - 支持动态缩放循环加载 - 支持大数据固定Item复用加载 - 支持不用Mask遮罩无限循环加载 - 支持Object ...
- Unity UGUI图文混排源码(三) -- 动态表情
这里是根据图文混排源码(二)进一步修改的,其他链接也不贴了,就贴一个链接就好了,第一次看这文章的同学可以先去看看其他几篇文章 Unity UGUI图文混排源码(二):http://blog.csdn. ...
- Unity UGUI图文混排源码(二)
Unity UGUI图文混排源码(一):http://blog.csdn.net/qq992817263/article/details/51112304 Unity UGUI图文混排源码(二):ht ...
随机推荐
- 让代码变得优雅简洁的神器:Java8 Stream流式编程
原创/朱季谦 本文主要基于实际项目常用的Stream Api流式处理总结. 因笔者主要从事风控反欺诈相关工作,故而此文使用比较熟悉的三要素之一的[手机号]黑名单作代码案例说明. 我在项目当中,很早就开 ...
- CentOS 6.8 安装 node 后报错,显示 gcc 版本过低
因为测试服务器要部署一个 vue 的环境,安装了 node 和 npm 后,却由于 gcc 动态库版本过低,导致报错如下 node: /usr/lib64/libstdc++.so.6: versio ...
- 【能力提升】SQL Server常见问题介绍及快速解决建议
前言 本文旨在帮助SQL Server数据库的使用人员了解常见的问题,及快速解决这些问题.这些问题是数据库的常规管理问题,对于很多对数据库没有深入了解的朋友提供一个大概的常见问题框架. 下面一些问题是 ...
- WebAssembly 助力云原生:APISIX 如何借助 Wasm 插件实现扩展功能?
本文将介绍 Wasm,以及 Apache APISIX 如何实现 Wasm 功能. 作者朱欣欣,API7.ai 技术工程师 原文链接 什么是 Wasm Wasm 是 WebAssembly 的缩写.W ...
- 3.1 JAVA方法:
JAVA方法: 何为方法 方法是语句的集合,这个集合执行一个功能 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 java全是值传递 方法的定义和调用 方法的定义: 修饰符 返回类型 方法 ...
- iOS APP启动广告实现方式 与 APP唤端调用
APP启动广告功能实现要从2个方面思考 一是UI方案,怎样处理广告页与主页之间的切换方式. 二是广告页展示时机,是使用后台实时广告数据还是使用本地缓存广告数据.后台数据方式获取广告最新但是用户要等待后 ...
- Centos7.x 更换Jenkins构建目录
原由:最近因为原来的Jenkins构建目录,已经要满了,想着更换下构建目录,此篇文件简单介绍下更换过程. 注:此文章可能仅适用于我个人,仅供参考.如有其他办法,欢迎评论指教. 查了几种方法,最终选为使 ...
- AppScan-使用入门
一.介绍 AppScan是IBM公司出的一款Web应用安全测试工具,采用黑盒测试的方式,可以扫描常见的web应用安全漏洞 工作原理 首先是根据起始页爬取站下所有可见的页面,同时测试常见的管理后台 获得 ...
- CF1477F Nezzar and Chocolate Bars 题解
题意: 有一根长为 \(1\) 的巧克力,已经被切了 \(m-1\) 刀被分成 \(m\) 分,接下来每次在整根长度为 \(1\) 的巧克力上均匀随机一个点切一刀,求每一小段巧克力长度均小于一个给定值 ...
- 推荐Visual Studio四款好用插件
我要推荐的4个插件,合理使用可以提高工作效率,分别是: 1.Markdown Editor 可以在vs预览markdown文件的插件 2.Add New File 我们原本在vs中新建文件,需要添加新 ...