user-interface - 在 Unity 中创建一个螺旋形 UI 栏

标签 user-interface unity3d

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

Spiral

默认组件似乎只能正常工作。我可以将矩形作为条形或径向条形。

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

最佳答案

我会使用自定义着色器和一个包含“填充信息”的 Sprite 作为 alpha channel 。

在下图中,您将看到您的原始 Sprite 和另一个具有渐变 alpha 的 Sprite (抱歉,我不是 Photoshop 专家)。

enter image description here

您可以在 their website 上下载 Unity 着色器。 ,然后选择 DefaultResourcesExtra/UI 中的 UI-Default.shader 并稍微调整一下,以便根据 Sprite 的 alpha 值填充 Sprite 。

类似这样的(未测试)

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 参数

关于user-interface - 在 Unity 中创建一个螺旋形 UI 栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48073418/

相关文章:

java - 如何使用 Eclipse 使用给定的代码在 Java 中编译 GUI

user-interface - 您可以在 Xamarin Android/iOS 中创建 UI 并在 Xamarin.Forms 中创建代码吗?

iOS 11,Unity3d随机启动崩溃

unity3d - 如何在 Unity 中设置整个颜色 channel 的饱和度

python - 关闭 tkinter 窗口和消息框错误窗口

java - 并排定位新编辑器

user-interface - 在 Xamarin UI 测试中需要帮助

css - 在新的 Unity WebGL 模板中添加全屏显示方式

c# - 将360°映射到-1和1之间的值

c# - 如何使用 slider 纠正高音量下降