public static void Init(Transform root) { if (isInited == false) { isInited = true; tipType = -1; _container = root.Find("Container"); _recycle = root.Find("Recycle"); //alertObj.localPosition = Vector3.zero; offset = new Vector2(25, -25); UILoopManager.AddToFrame(loopKey, OnEnterFrame); } }
public void SetDataProvider <T>(IEnumerable <T> value) { if (_itemRender == null) { Debug.LogError("set itemRender first!"); return; } if (_itemPool == null) { _itemPool = new List <CItemRender>(); } if (_allItem == null) { _allItem = new List <CItemRender>(); } SetData <T>(value); //_dataProvider = (value ?? new List<T>()) as List<object>; bool isEnough = _allItem.Count >= _dataProvider.Count; int n = Mathf.Abs(_allItem.Count - _dataProvider.Count); CItemRender item; while (n > 0) { if (isEnough == true) { item = _allItem[_allItem.Count - 1]; _itemPool.Add(item); _allItem.RemoveAt(_allItem.Count - 1); item.SetParent(recycle); item.tran.localPosition = Vector3.zero; item.SetActive(false); } else { if (_itemPool.Count > 0) { item = _itemPool[0]; _itemPool.RemoveAt(0); item.SetActive(true); } else { item = (CItemRender)Activator.CreateInstance(_itemRender); } item.SetParent(transform); _allItem.Add(item); } n--; } ResetItems(); lastDataProvider = value; if (_allItem.Count > 0) { if (alwaysMove || _allItem.Count * itemWidth > (content.baseClipRegion.z)) { UILoopManager.AddToFrame(this, OnLoop); } else { UILoopManager.RemoveFromFrame(this); } } else { UILoopManager.RemoveFromFrame(this); } }
public void RollTo(float target, int time = 20) { targetValue = target; rollSpeed = (target - value) / time; UILoopManager.AddToFrame(this, OnMove); }