NGUI本身的裁剪有例子,在自带的Shader中的Transparent Colored 1
v2f vert(appdata_t v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.color = v.color;
o.texcoord = v.texcoord;
//就是这句 传进来相对于drawcall里设置的自身坐标 NGUI通过处理 近似于屏幕坐标 然后通过裁剪区域运算
o.worldPos = v.vertex.xy * _ClipRange0.zw + _ClipRange0.xy;
return o;
}
但是粒子或者模型不在NGUI的drawcall中,因此无法通过复制他的逻辑实现裁剪,可以根据这个思路写一个,其实原理就是给shader设置一个裁剪区域。
//这是示例shader 重点其实就注释的4个地方 使用Unity版本5.6.5f1
Shader "Effect/Effect_additive_LV1" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
_tintColor("Tint Color",Color) = (0.5,0.5,0.5,1)
}
SubShader {
Tags { "Queue&#