在MobileMenuElement中有var vector2D VpPos,VpSize; 分别是列表的位置和大小。然后在MobileMenuListItem中有Height和Width。分别表示每一个item的长度和宽度。
在MobileMenuListItem中可以填充这些元素。
我自己定义了一种文字var array<AntDrawText> Parts;
AntDrawText是自定义的文字类,里面的Render(Canvas,Alpha);//是文字的渲染函数
function RenderItem(MobileMenuList List,Canvas canvas,float DeltaTime)
{
local AntDrawText Part;
local float Percentage,AlphaVal; //我们定义了一个百分比和显示的Alpha值,目的是为了让人员名单两边以渐变的形式消隐
super.RenderItem(List,Canvas,DeltaTime);
Percentage=FMax(0,VpPos.Y)/Clip.Y; //纵轴在屏幕的百分比
AlphaVal=1.f;
if(Percentage<0.2f) //如果是在顶部20%区域
{
AlphaVal=FMin(1,0.5f*Percentage);
}
else
{
Percentage=FMax(0,VpPos.Y+height)/Canvas.ClipY; //下部的话,我们得算上其宽度
if(Percentage>0.8)
{
Percentage=1-Percentage;
AlphaVal=FMin(1,Percentage*5.0f);
}
}
foreach Parts(part)
{
Part.Render(Canvas,FClamp(AlphaVal,0,1));
}
}