EnhancedScroller 无限循环卷轴使用
最近做了一个拍摄定格动画软件,其中重要的部分就是图片的timeline部分 就是图片序列帧 想用卷轴视图来做。
Scroll View(卷轴视图)的使用非常普遍,但要面临的一个问题是,当列表有大量元素时,性能会非常低下。
当我有两千张图片时,会造成卡顿。
下面介绍一下EnhancedScroller 插件,他的作用可以将列表中的元素循环使用。
(因为我是在做好的源代码上复制下来的,有些不全面请见谅 有问题可以联系我上方的联系方式)
下面来看下如何使用
首先我们了解一下这个插件,这个插件是典型的MVC架构的插件
Model——View——Controller
1.创建数据模型
using UnityEngine;
public class PlayerData {
public int posindex;
public int picname;
public Texture texSst;
public bool t;
}
2 创建UI视图控制脚本
public class PlayerCellView : EnhancedScrollerCellView
{
private PlayerData _data;
public Text picnameindex;
public void SetData(PlayerData data)
{
_data = data;
RefreshCellView();
}
3. 创建控制器
public class PlayerScrollerController : GameManager, IEnhancedScrollerDelegate
{
public static PlayerScrollerController _instance = null;
public List<PlayerData> _data;
List<PlayerData> recordcopydata = new List<PlayerData>();
public EnhancedScroller myScroller;
List<PlayerData> pastepldata = new List<PlayerData>();
public PlayerCellView playerCellViewPrefab;
public EnhancedScroller.TweenType myScrollerTweenType = EnhancedScroller.TweenType.immediate;
public int GetNumberOfCells(EnhancedScroller scroller)
{
//throw new System.NotImplementedException();
return _data.Count;
}
public float GetCellViewSize(EnhancedScroller scroller, int dataIndex)
{
//throw new System.NotImplementedException();
// 返回列表UI元素的高度 这个值要根据实际UI大小来填写
return 120f;
}
public EnhancedScrollerCellView GetCellView(EnhancedScroller scroller, int dataIndex, int cellIndex)
{
//throw new System.NotImplementedException();
//在这里加载列表中的UI元素 初始化 设置按钮事件回调
PlayerCellView cellView = scroller.GetCellView(playerCellViewPrefab) as PlayerCellView;
cellView.SetData(_data[dataIndex]);
//cellView.transform.Rotate(camRot);
return cellView;
}
接下里,我们创建卷轴视图UI
创建scroll view 然后添加一个Enhanced Scroller组件 并且添加一个Mask蒙版
在Content下面创建一个空物体,命名为cellview 在cellview下添加ui控件 在实际使用中,可以根据需求任意添加UI控件,
添加脚本playcellview 最后将cellview保存为Prefab