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/

相关文章:

用于动画的 JQuery IDE(类似 IDE 的 Flash)

user-interface - 有什么好的网站可以查看实际 Web 应用程序的屏幕截图吗?

c# - 如何使用 System.Timers.Timer 访问/修改另一个线程上的控件?

user-interface - 从 Hadoop Web UI 将文件添加到 HDFS

android - Android 中的 play-services-base 与 -basement 依赖关系 (AAR)

xcode - OSX - 发布 Unity 游戏

java - 为什么每次执行 ActionListener 时我的 GUI 窗口都会卡住?

camera - 将主相机与 transform.LookAt 一起用于目标但不旋转相机

Unity3D 中的 C# 脚本仅 debug.log 而不是旋转

c# - 'TextMeshPro/Distance Field' : failed to open source file: 'TMPro_Properties.cginc' at line 126 (on d3d11) 中的着色器错误