在Unity中创建一个螺旋UI栏

时间:2018-01-03 08:02:12

标签: user-interface unity3d

是否可以在Unity中创建像这样的栏?

Spiral

默认组件似乎只是原始的。我可以有一个矩形作为条形或径向条。

这个螺旋条需要有权访问路径,因为颜色必须知道如何沿着精灵移动。

2 个答案:

答案 0 :(得分:5)

我会使用一个带有精灵的自定义着色器,其中包含"填充信息"作为alpha通道。

在下面的图片中,你会看到你的原始精灵,另一个带有渐变alpha的精灵(对不起,我不是Photoshop的专家)。

enter image description here

您可以在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空间。