Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 统一闪亮着色器覆盖2D精灵_Unity3d_Shader_Sprite - Fatal编程技术网

Unity3d 统一闪亮着色器覆盖2D精灵

Unity3d 统一闪亮着色器覆盖2D精灵,unity3d,shader,sprite,Unity3d,Shader,Sprite,我有一个用于2D sprite的统一着色器: //Kaan Yamanyar,Levent Seckin 着色器“精灵/幻灯故障” { 性质 { [PerRendererData]_MainTex(“精灵纹理”,2D)=“白色”{} _颜色(“色调”,颜色)=(1,1,1,1) _ShineLocation(“ShineLocation”,范围(0,1))=0 _ShineWidth(“ShineWidth”,范围(0,1))=0 [MaterialToggle]像素捕捉(“像素捕捉”,浮点)

我有一个用于2D sprite的统一着色器:

//Kaan Yamanyar,Levent Seckin
着色器“精灵/幻灯故障”
{
性质
{
[PerRendererData]_MainTex(“精灵纹理”,2D)=“白色”{}
_颜色(“色调”,颜色)=(1,1,1,1)
_ShineLocation(“ShineLocation”,范围(0,1))=0
_ShineWidth(“ShineWidth”,范围(0,1))=0
[MaterialToggle]像素捕捉(“像素捕捉”,浮点)=0
}
子阴影
{
标签
{
“队列”=“透明”
“忽略投影仪”=“真”
“RenderType”=“透明”
“预览类型”=“平面”
“CanUseSpriteAtlas”=“False”
}
剔除
熄火
注销
把一个混合在一起
通过
{
CGP程序
#pragma顶点顶点
#布拉格碎片碎片
#pragma multi_compile uu PIXELSNAP_ON
#包括“UnityCG.cginc”
结构应用数据
{
浮动4顶点:位置;
浮动4颜色:颜色;
浮动2 texcoord:TEXCOORD0;
};
结构v2f
{
浮动4顶点:SV_位置;
固定颜色4:颜色;
浮动2 texcoord:TEXCOORD0;
};
固定4色;
v2f垂直(应用数据输入)
{
v2f输出;
OUT.vertex=mul(单位矩阵,IN.vertex);
OUT.texcoord=IN.texcoord;
OUT.color=IN.color*\u color;
#ifdef像素捕捉打开
OUT.vertex=UnityPixelSnap(OUT.vertex);
#恩迪夫
返回;
}
取样器2D_MainTex;
取样器2D_字母;
浮动-已启用;
浮子定位;
浮子_ShineWidth;
固定4个样本PriteTexture(浮动2 uv)
{
fixed4颜色=tex2D(_MainTex,uv);
#如果统一\u纹理\u字母分割\u允许
如果(_AlphaSplitEnabled)
颜色.a=tex2D(_-AlphaTex,uv).r;
#endif//UNITY\u纹理\u字母拆分\u允许
浮动低电平=_ShineLocation-_ShineWidth;
浮动高电平=_ShineLocation+_ShineWidth;
浮动电流距离投影=(uv.x+uv.y)/2;
如果(currentDistanceProjection>lowLevel&¤tDistanceProjection}
您需要为使用着色器的渲染器设置
排序层
顺序层

例如,转到“编辑->项目设置->标记和图层”,定义一个名为“覆盖图层”的图层,并将其放置在精灵使用的图层之后,然后:

[shaderedObject].GetComponent<Renderer>().sortingLayerName = "overlay layer";
[shaderedObject].GetComponent().sortingLayerName=“覆盖层”;

您需要为使用着色器的渲染器设置
排序层
顺序层

例如,转到“编辑->项目设置->标记和图层”,定义一个名为“覆盖图层”的图层,并将其放置在精灵使用的图层之后,然后:

[shaderedObject].GetComponent<Renderer>().sortingLayerName = "overlay layer";
[shaderedObject].GetComponent().sortingLayerName=“覆盖层”;