UGUI之Shadow陰影元件
基本屬性圖如下:
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會導致頂點數翻倍:
以上知識分享,如有錯誤,歡迎指出,共同學習,共同進步。