在Unity下实现遮罩功能

在做项目的时候,遇到一个问题就是在一个UI界面上面会随机生成一些gameObject,但是他们的出现时有一定范围的,所以要做一个遮罩来控制这个范围,让生成的对象进入遮罩范围之后就不显示出来。。

1. 首先创建一个场景,在里面添加一个球(把这个部分当做是UI部分),主要是要说明用了遮罩之后,不会把我们的UI上的内容遮盖住

在Unity下实现遮罩功能

下面是摄像机的参数,主要是把相机变成正交摄像机,这也是普通UI摄像机的设置。

在Unity下实现遮罩功能

2. 然后给再添加一个图标(作为要被遮罩的内容)和一个Cube(遮罩),把图标的lay设置成GUI layer,把Cube的layer设置成Mask Layer, 然后另外添加一个摄像机专门显示图标和Cube:

在Unity下实现遮罩功能

这时候的场景如下:

在Unity下实现遮罩功能

3. 接下来是把Cube做成一个透明的遮罩,首先是写一个Shader:

DepthMask.shader,放在Asset目录下即可被读取。

Shader "Depth Mask" {

SubShader{

ColorMask 0

Pass {}

}

}

4. 修改Cube的Material,随便选择一种材料,然后给材料选择上我们的Shader,即可看到遮罩的效果。

5. 在Unity下实现遮罩功能

在Unity下实现遮罩功能

6. 完成~!!!

转载于:https://my.oschina.net/u/185335/blog/348528