Unity+Slua实现游戏常用UI组件(六)——单(多)元素滚动布局组件

Unity+Slua实现游戏常用UI组件(六)——单(多)元素滚动表格组件

    • 单元素滚动表格组件——LSIScrollView
    • 多元素滚动表格组件——LMIScrollView
    • 有了滚动表格组件之后为何还需要这两个组件?

单元素滚动表格组件——LSIScrollView

  • 定义
    单元素滚动表格组件下只有一种元素,支持元素自动布局并在滚动过程中元素复用
  • 组件效果展示
LSIScrollView效果展示

LSIScrollView元素复用

  • 特性
    • 创建满足Mask显示的最小数量的元素,滚动过程中保证元素复用(见上面两张图效果)
    • 要求组件下有且只有一种元素
    • 支持设置元素与元素之间的间隔(gap),设置元素与ScrollRect中Content的偏移值(padding)
    • 滚动到展示内容末尾会有对应事件派发,方便实现数据流的效果(详见LSIScrollViewDemo的第1个例子)
    • 使用者与元素方便进行交互,拓展性良好
  • 元素复用逻辑
    因为组件下有且只有一种元素,结合ScrollRect中Content的偏移值以及Mask的大小,就可以计算出显示元素的下标范围,之后对下标在显示范围之外的元素放入缓存池并隐藏,对下标在显示范围之内的元素,从缓存池获取或者创建,并显示。
  • 项目地址
    git地址 (Demo中的LSIScrollViewDemo)
    Unity版本:5.6.6

多元素滚动表格组件——LMIScrollView

  • 定义
    多元素滚动表格组件支持多种元素,支持元素自动垂直布局并在滚动过程中元素复用
  • 效果展示
LMIScrollView效果展示

LMIScrollView元素复用

  • 特性
    • 创建满足Mask展示的最小数量的元素,滚动过程中保证元素复用(见上面两张图效果)
    • 支持多种类型的元素(详见LMIScrollViewDemo)
    • 支持设置元素与元素之间的间隔(gap)
    • 使用者与元素方便进行交互,拓展性良好
  • 使用限制与要求
    • 目前只支持垂直方向,单列滚动,不支持设置元素与ScrollRect中Content的偏移值(padding)
    • SetData中dataList的结构为
      {
      {type = itemType, data = data},
      {type = itemType, data = data},
      {type = itemType, data = data},
      }
      其中ItemType为Content下模板对象的下标
  • 复用逻辑
    复用逻辑与树形组件LTree的逻辑类似,就是在SetData之后生成一份每个元素的y轴坐标列表,这样我们通过Content的偏移值以及Mask大小,就可以获取显示的下标范围,根据显示的下标范围,就可以轻易的知道哪些元素要隐藏并缓存,哪些元素要从缓存池获取或者创建,并显示
  • 项目地址
    git地址 (Demo中的LMIScrollViewDemo)
    Unity版本:5.6.6

有了滚动表格组件之后为何还需要这两个组件?

原因我在滚动表格组件有解释,详见Unity+Slua实现游戏常用UI组件(一)
主要原因是单(多)元素滚动表格组件是对滚动表格组件的延伸,在大部分情况下,可以用这两个组件去替代滚动表格组件,使用会更方便,修改的灵活性更强

你可能感兴趣的:(unity)