我有一个简单的着色器,模仿"填充" SpriteRenderer的图像类型。它允许根据它的填充量切断部分精灵。 但是如果Object被任何轴反转,则着色器不起作用(无论是通过旋转,缩放还是"翻转" SpriteRenderer上的复选框)。 当Object被反转时,Sprite根本就不被绘制。
着色器:
Shader "Custom/ProgressShaderUpToDown" {
Properties{
_MainTex("Base (RGB)", 2D) = "white" {}
_Progress("Progress (Float)", Float) = 0
_Color("Tint", Color) = (1.0, 0.6, 0.6, 1.0)
}
SubShader{
Tags{ "Queue" = "Transparent" }
Pass{
Blend SrcAlpha OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert_img
#pragma fragment frag
#include "UnityCG.cginc"
uniform sampler2D _MainTex;
uniform float _Progress;
uniform fixed4 _Color;
float4 frag(v2f_img i) : COLOR
{
float4 result = tex2D(_MainTex, i.uv);
if (i.uv.y > _Progress)
{
result.a = 0;
}
return result*_Color;
}
ENDCG
}
}
}
我该如何解决这个问题?
答案 0 :(得分:0)
看起来像脸变成"背面"被翻转后被剔除。尝试在Blend SrcAlpha OneMinusSrcAlpha
之后添加import struct
data = [39, 39, 126, 126, 256, 258, 260, 259, 257, 126]
encoded = struct.pack(">{}H".format(len(data)), *data)
tmp = struct.pack(">H", len(data))
encoded = tmp + encoded #appending at the start
begin = 2
try:
size = struct.unpack(">H", encoded[0:begin])[0]
print(size)
print(struct.unpack(">{}H".format(size), encoded[begin:]))
except Exception as e:
print(e)
来禁用剔除。