博客迁移
个人博客站点,欢迎访问,www.jiingfengji.tech
正文
基本属性图如下:
1、Effect Color:阴影的颜色
2、Effect Distance:阴影的偏移距离
(1)x轴水平方向:当x=0时,阴影在水平方向上中间;当x>0时,阴影在右方;当x<0时,阴影在左方
(2)y轴垂直方向:当y=0时,阴影在垂直方向上中间;当y>0时,阴影在上方;当y<0时,阴影在下方
从上图中可见其效果,另外从源码中可以看出x、y的范围均为[-600,600],当然实际应用中这个范围是绝对足够用的
源码如下:
public Vector2 effectDistance
{
get { return m_EffectDistance; }
set
{
if (value.x > 600)
value.x = 600;
if (value.x < -600)
value.x = -600;
if (value.y > 600)
value.y = 600;
if (value.y < -600)
value.y = -600;
if (m_EffectDistance == value)
return;
m_EffectDistance = value;
if (graphic != null)
graphic.SetVerticesDirty();
}
}
3、Use Graphic Alpha:是否使用Graphic中的Alpha透明度
(1)勾选:阴影的透明度会根据Graphic的透明度变化而变化
注意看下面两个图中的颜色Alpha值以及左边的Text透明度变化
图一
图二
从以上可以看出勾选Use Graphic Alpha的效果
(2)不勾选:阴影的透明度不会根据Graphic的透明度变化而变化
在图二的基础上,去掉Use Graphic Alpha的勾选,结果如下:
阴影部分透明度并没有受到Graphic的影响
源码部分:
如果Use Graphic Alpha被勾选,m_UseGraphicAlpha为true,否则为false,从源码中可以如果m_UseGraphicAlpha为true,阴影的alpha经过了以下运算:newColor.a = (byte)((newColor.a * verts[i].color.a) / 255);
protected void ApplyShadowZeroAlloc(List<UIVertex> verts, Color32 color, int start, int end, float x, float y)
{
UIVertex vt;
var neededCpacity = verts.Count * 2;
if (verts.Capacity < neededCpacity)
verts.Capacity = neededCpacity;
for (int i = start; i < end; ++i)
{
vt = verts[i];
verts.Add(vt);
Vector3 v = vt.position;
v.x += x;
v.y += y;
vt.position = v;
var newColor = color;
if (m_UseGraphicAlpha)
newColor.a = (byte)((newColor.a * verts[i].color.a) / 255);
vt.color = newColor;
verts[i] = vt;
}
}
以上为Shadow结合Text组件的使用介绍,下面看一下Shadow结合Image组件的使用:
这里不再过多介绍,大家有兴趣,可以深入研究源码。
另外,使用Shadow会导致顶点数翻倍:
以上知识分享,如有错误,欢迎指出,共同学习,共同进步。