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