说起在unity中画虚线,本人想到了两种方法:
1.无数条小直线组成一条虚线。
2.写一个shader。
前者比较简单,所以这次的重点就放在结合shader实现画虚线了。
首先,需要准备一张背景透明,仅有一条虚线的png图片,如下所示(千万不要以为背景是白色的!)。
然后在场景中建一个Plane,把下面的shader给它。
Shader "Custom/NewShader" { Properties { _MainTex ("Base (RGB)", 2D) = "white" {} _Cutoff("Alpha Cutoff", Range(0, 1)) = 0.1 _Color("Color",Color) = (0,0,0,0) } SubShader { Pass { Material { Diffuse [_Color] Ambient[_Color] } Lighting On AlphaTest GEqual[_Cutoff] SetTexture[_MainTex] {} SetTexture[_MainTex] {combine texture + primary DOUBLE, previous} } } FallBack "Diffuse" }
讲解一下上面的shader:
1.将图片中透明值小于0.1的地方不绘制。
2.黑色加任何颜色等于任何颜色,这里的DOUBLE能增强颜色深度
效果图:
长度的控制:修改scale的x值
角度的控制:修改rotation的z值
粗细的控制:修改scale的z值
颜色的控制:在面板中修改shader的Color属性
值得一提的是,unity自带的shader也有透明度剔除的功能。
但是好像没有能修改虚线颜色的,所以就需要我们自己动手去写了。shader的学习还是需要多多实践,亲自动手。
时间: 2024-10-17 12:34:25