答案 0 :(得分:5)
我会使用一个带有精灵的自定义着色器,其中包含"填充信息"作为alpha通道。
在下面的图片中,你会看到你的原始精灵,另一个带有渐变alpha的精灵(对不起,我不是Photoshop的专家)。
您可以在their website下载Unity着色器,然后在 DefaultResourcesExtra / UI 中选择 UI-Default.shader 并稍微调整一下根据精灵的alpha值填充精灵。
像这样(未经测试)
Shader "UI/FillAlpha"
{
Properties
{
[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
_Color ("Tint", Color) = (1,1,1,1)
_FillAmount ("Fill amount", Float) = 1
// ...
}
SubShader
{
// ...
sampler2D _MainTex;
fixed _FillAmount;
fixed4 frag(v2f IN) : SV_Target
{
half4 color = (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd) * IN.color;
color.a = color.a > _FillAmount ? 1 : 0 ;
color.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect);
// ...
return color;
}
ENDCG
}
}
}
然后,您可以使用myMaterial.SetFloat
FillAmount
参数
答案 1 :(得分:1)
您可以使用Line Renderer
组件来创建条形图。
请参阅此处的文档和示例:
https://docs.unity3d.com/Manual/class-LineRenderer.html
https://docs.unity3d.com/352/Documentation/Components/class-LineRenderer.html
请注意,Line Renderer
适用于3D空间。