当你的游戏打完,你也会将你的演职人员名单像电影开发者一样滚动显示。
下面就是滚动技术的实现,我会讲的非常混乱。
MobileMenuList和MobileMenuListItem使我们所选择的滚动列表,他的特性是可以让玩家交互查看。
我们不仅仅设置滚动的速度,同时还定义自己的列表能否被玩家交互控制。
MobileMenuObject类中,非常重要的选项是处理交互和渲染。
渲染在function renderObject(Canvas Canvas,float DeltaTime)中进行。
MobileMenuList中Drag.bIsDragging和Movement.bIsMoving是两个重要的属性,他们分别定义List列表当前是否有选项ListItem被拖动和移动。
其中var SelectedMenuItem SelectedItem; //SelectedMenuItem是其定义的结构,分别有当前被选中物体的Index,Offset, bEndOfList。
CalculatedSelectedItem是用于处理当前选中的List位置信息的,包括滚动和位置情况,对了,以及是否结束bEndOfList。
这样在知道了位置信息之后我们才能渲染。
function RenderObject(Canvas Canvas,float DeltaTime)
{
if(!Drag.bIsDragging&&!Movement.bIsMoving)
{
CalculatedSelectedItem(SelectedItem,DeltaTime*ScrollPixelPerSec,false); //我们让其在每Tick中都进行滚动
}
Super.RenderObject(Canvas,DeltaTime);
}
//既然我们让显示人员名单可控,我们就得处理触碰事件。
event bool OnTouch(EZoneTouchEvent EventType,float TouchX,float TouchY,MobileMenuObject ObjectOver,float DeltaTime)
{
//这才是能否接受Touch的前提条件
if(bAllowInterrupt)
{
return Super.OnTouch(EventType,TouchX,TouchY,ObjectOver,DeltaTime);
}
return true;
}
/** When user taps on an options, should we scroll to it? Typically, when there is no obvious 'selected', you don't want to */
var bool bTapToScrollToItem;
认真的去读MobileMenuList,Epic为我们做了很多有用的接口。下一节MobileMenuListItem