User interface 在Unity中创建螺旋UI栏

User interface 在Unity中创建螺旋UI栏,user-interface,unity3d,User Interface,Unity3d,有可能在Unity中创建一个这样的酒吧吗 默认组件似乎只在原语中工作。我可以有一个矩形作为一个酒吧或径向酒吧 此螺旋条需要访问路径,因为颜色必须知道如何沿精灵移动。您可以使用线条渲染器组件创建条。 请参见此处的文档和示例: 请注意,线条渲染器在3D空间中工作。我将使用一个自定义着色器,其中包含“填充信息”的精灵作为alpha通道 在下图中,您将看到您的原始精灵,以及另一个带有渐变alpha的精灵(对不起,我不是photoshop的专家) 您可以在上下载Unity着色器,然后在Defaul

有可能在Unity中创建一个这样的酒吧吗

默认组件似乎只在原语中工作。我可以有一个矩形作为一个酒吧或径向酒吧


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

您可以使用
线条渲染器组件创建条。
请参见此处的文档和示例:


请注意,
线条渲染器
在3D空间中工作。

我将使用一个自定义着色器,其中包含“填充信息”的精灵作为alpha通道

在下图中,您将看到您的原始精灵,以及另一个带有渐变alpha的精灵(对不起,我不是photoshop的专家)

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

类似这样的东西(未测试)

着色器“UI/FillAlpha”
{
性质
{
[PerRendererData]_MainTex(“精灵纹理”,2D)=“白色”{}
_颜色(“色调”,颜色)=(1,1,1,1)
_填充量(“填充量”,浮动)=1
// ...
}
子阴影
{
// ...
取样器2D_MainTex;
固定金额;
固定4框架(v2f英寸):SV_目标
{
half4颜色=(tex2D(_MainTex,IN.texcoord)+_TextureSampleAdd)*IN.color;
color.a=color.a>\u填充量?1:0;
color.a*=UnityGet2DClipping(IN.worldPosition.xy,_ClipRect);
// ...
返回颜色;
}
ENDCG
}
}
}

然后,您可以使用

更改
FillAmount
参数,我将创建不同的直条来实现这一点。比如,如果整个条有10条边,10条不同的条。当一个已经满了,开始填充另一个。但是我也想知道是否有更简单的方法。是的,我考虑过了,但是这个“技巧”可能会以过度工程结束如果你想避免逻辑运算符“大于”出现的锯齿问题,你应该使用一个保留渐变细微差别的函数,比如:
color.a=saturate((color.a-\u FillAmount)*(过渡),