Unity+Slua实现游戏常用UI组件(六)——单(多)元素滚动布局组件
Unity+Slua实现游戏常用UI组件(六)——单(多)元素滚动布局组件
单元素滚动布局组件——LSIScrollView
- 定义
单元素滚动布局组件下只有一种元素,支持元素自动布局并在滚动过程中元素复用 - 组件效果展示
- 特性
- 创建满足Mask显示的最小数量的元素,滚动过程中保证元素复用(见上面两张图效果)
- 要求组件下有且只有一种元素
- 支持设置元素与元素之间的间隔(gap),设置元素与ScrollRect中Content的偏移值(padding)
- 滚动到展示内容末尾会有对应事件派发,方便实现数据流的效果(详见LSIScrollViewDemo的第1个例子)
- 使用者与元素方便进行交互,拓展性良好
- 元素复用逻辑
因为组件下有且只有一种元素,结合ScrollRect中Content的偏移值以及Mask的大小,就可以计算出显示元素的下标范围,之后对下标在显示范围之外的元素放入缓存池并隐藏,对下标在显示范围之内的元素,从缓存池获取或者创建,并显示。 - 项目地址
git地址 (Demo中的LSIScrollView)
Unity版本:5.6.6
多元素滚动布局组件——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地址 LMIScrollView
Unity版本:5.6.6
有了滚动布局组件之后为何还需要这两个组件?
原因我在滚动布局组件有解释,详见链接Unity+Slua实现游戏常用UI组件(一)
主要原因是单(多)元素滚动布局组件是对滚动布局组件的延伸,在大部分情况下,可以用这两个组件去替代滚动布局组件,使用会更方便,功能性更强