【Unity】基于矩阵的UGUI引导蒙版方案

本文介绍了如何在Unity中实现一个基于矩阵的UGUI引导蒙版方案,通过计算蒙版区域的矩阵并传入shader,实现旋转支持、边缘柔和以及点击穿透判断。这种方法避免了传统方式中蒙版区域无法旋转的问题,同时提供了高效的计算效率和自适应屏幕变化的能力。
摘要由CSDN通过智能技术生成
UGUI实现引导蒙版有多种方案,可以基于shader,或纯粹靠程序实现,这里分享一种最近在项目中使用的基于shader的蒙版方案。

许多基于shader的引导蒙版方案都是将需要遮罩的区域以vector4的形式传入shader,这种方式实现简单且易于理解,而且效果不错,但使用这种方式容易造成一种无法避免的问题:蒙版区域无法旋转,当然除非额外传入遮罩区域的旋转信息。

今天要介绍的方案是直接计算出蒙版区域的矩阵(一个规范化空间,可以将坐标规范化到0-1内),将矩阵传入shader,在蒙版shader中处理顶点时将顶点转入矩阵,以矩阵中的坐标是否在0-1范围内判断(有点类似投影空间裁剪)。以这种方式实现的蒙版优点是,由于矩阵本身记录了坐标、旋转、缩放等信息,不需要在再shader中额外计算,只需要做一次矩阵左乘操作即可拥有同时具有旋转和遮罩功能的引导蒙版。另外c#脚本可以缓存一个当前矩阵,用来做点击穿透判断。另一个优点是,由于矩阵信息本身来自UI的RectTransform,因此可以避开对UI锚点等屏幕自适应规则的计算,总的来说如果熟悉矩阵运算的话,这种方式可以避开很多头疼的计算。另外由于最终是将蒙版中的像素坐标转到实际遮罩区域,并且遮罩区域规范化到0-1内,可以做出边缘过渡柔和的效果。
效果如下:
旋转支持:



穿透判定:



边缘柔和:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值