绘制一个 2D 坐标系,通过鼠标拖动的方式,来设置绑定的 Vector 属性的对应分量
Dir2D() 使用坐标系控制 Vector 的 X Y 分量值, X Y 组成的向量长度有效。此模式下,当标点位于圆上时,鼠标在坐标系内部邮件点击,可以让标点从圆上脱离。
Dir2D(true) 使用坐标系控制 Vector 的 X Y Z 分量值,其中 X Y 组成单位向量,长度始终为 1 ,Z 值为实际的向量长度。此模式下标点一直位于圆上,除了 0 0 值会位于圆心。
Shader "BZGUITest/Direct2D"
{
Properties
{
[Dir2D]_XYLen ("xyWithLen", Vector) = (0.5,0.5,1,2)
[Dir2D(true)]_XYDir_ZLenght("xyNormalizeZLength", Vector) = (1,0,1,2)
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 100
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
// make fog work
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
half4 _XYLen;
v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
UNITY_TRANSFER_FOG(o,o.vertex);
return o;
}
fixed4 frag (v2f i) : SV_Target
{
return _XYLen;
}
ENDCG
}
}
}