FairyGUI使用——循环列表
public class LoopList : MonoBehaviour{private GComponent mainUI;private GList list;// Start is called before the first frame updatevoid Start(){mainUI = GetComponent<UIPanel>().ui;list = mainUI.
Unity:2021.1.14flc1
FairyGUI:4.2.0
虚拟列表
如果列表的item数量特别多时,例如几百上千,为每一条项目创建实体的显示对象将非常消耗时间和资源。FairyGUI的列表内置了虚拟机制,也就是它只为显示范围内的item创建实体对象,并通过动态设置数据的方式实现大容量列表。
启用虚拟列表有几个条件:
- 需要定义itemRenderer。
- 需要开启滚动。溢出处理不是滚动的列表不能开启虚拟。
- 需要设置好列表的“项目资源”。可以在编辑器内设置,也可以调用GList.defaultItem设置。
满足条件后可以开启列表的虚拟功能:
aList.SetVirtual();
循环列表
循环列表是指首尾相连的列表,循环列表必须是虚拟列表。启用循环列表的方法为:
aList.SetVirtualAndLoop()。
循环列表只支持单行或者单列的布局,不支持流动布局和分页布局。
因为循环列表是首尾相连的,指定一个item索引可能出现在不同的位置,所以需要指定滚定位置时,尽量避免使用item索引。例如,如果需要循环列表左/上滚一格或者右/下滚一格,最好的办法就是调用ScrollPane的API:ScrollLeft/ScrollRight/ScrollUp/ScrollDown
循环列表的特性与虚拟列表一致,在此不再赘述。
加载图片资源
发布包中的图片资源如下图:
利用button的icon(装载器)属性赋予url来加载图片
button.icon = UIPackage.GetItemURL("LoopList",
"image0" + (index + 1));
代码(挂载在UIPanel组件上)
public class LoopList : MonoBehaviour
{
private GComponent mainUI;
private GList list;
// Start is called before the first frame update
void Start()
{
mainUI = GetComponent<UIPanel>().ui;
list = mainUI.GetChild("n0").asList;
list.SetVirtualAndLoop();
list.itemRenderer = RenderListItem;
list.numItems = 7;//设置列表内容数
}
private void RenderListItem(int index, GObject obj)
{
GButton button = obj.asButton;
button.icon = UIPackage.GetItemURL("LoopList", "image0" + (index + 1));
}
}
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)