Shader "Custom/BlackCircleWithOutline" { Properties { _InnerColor("Inner Color", Color) = (0,0,0,0.9) // 内部颜色(黑色) _OutlineColor("Outline Color", Color) = (1,1,1,0.9) // 轮廓颜色(白色) _Thickness("Thickness", Range(0, 0.5)) = 0.05 // 圆圈轮廓厚度 } SubShader { Tags { "Queue" = "Transparent" "RenderType" = "Transparent" } LOD 100 Blend SrcAlpha OneMinusSrcAlpha // 开启透明混合 Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata_t { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; float4 vertex : SV_POSITION; }; fixed4 _InnerColor; // 内部颜色 fixed4 _OutlineColor; // 轮廓颜色 float _Thickness; // 圆圈轮廓厚度 v2f vert(appdata_t v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = v.uv; return o; } fixed4 frag(v2f i) : SV_Target { float2 center = float2(0.5, 0.5); // 圆心 float dist = distance(i.uv, center); // 当前像素到圆心的距离 if (dist < (0.5 - _Thickness)) { return _InnerColor; // 圆心内显示黑色 } else if (dist <= 0.5) { return _OutlineColor; // 在轮廓区域显示白色 } // 外部区域返回完全透明 return float4(0, 0, 0, 0); } ENDCG } } }