using UnityEngine; using System.Collections; using System.Collections.Generic; public class ListHelper { public enum Order { ASC, DESC } public static void FillList(Transform container, List list, ItemRenderer itemRenderer, int limit = int.MaxValue, Order order = Order.ASC) { int index = 0; if(list != null) { for(int i=0; i (); item.gameObject.SetActive (true); item.data = list [i]; if (order == Order.DESC) item.transform.SetAsFirstSibling (); } else { AddToList (container, list [i], itemRenderer, limit, order); } index++; } } for(int i=index; i < container.childCount; i++) { container.GetChild (i).gameObject.SetActive (false); } } public static void AddToList(Transform container, T data, ItemRenderer itemRenderer, int limit = int.MaxValue, Order order = Order.ASC) { ItemRenderer item = null; if (container.childCount >= limit) { if (order == Order.ASC) item = container.GetChild (0).GetComponent (); else item = container.GetChild (container.childCount - 1).GetComponent (); } else { item = GameObject.Instantiate (itemRenderer.gameObject).GetComponent (); PopUpManager.AddToMainCanvas (item.gameObject, container); } item.gameObject.SetActive (true); if (order == Order.ASC) item.transform.SetAsLastSibling (); else item.transform.SetAsFirstSibling (); item.data = data; } public static void AddToScrollChatList(Transform container, T data, ItemRenderer itemRenderer, int limit = int.MaxValue) { ItemRenderer item = container.GetChild (0).GetComponent (); if (!item.gameObject.activeSelf) { item.transform.SetAsLastSibling (); } else { item = GameObject.Instantiate (itemRenderer.gameObject).GetComponent (); PopUpManager.AddToMainCanvas (item.gameObject, container); } item.gameObject.SetActive (true); item.data = data; } public static void Remove(Transform container, T data) { if (data == null) return; for(int i=0; i(); if(item.data != null && item.data.Equals(data)) { item.transform.SetAsLastSibling (); item.gameObject.SetActive (false); return; } } } public static void HideAll(Transform container) { for(int i=0; i < container.childCount; i++) { container.GetChild (i).gameObject.SetActive (false); } } }