ListHelper.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. public class ListHelper
  5. {
  6. public enum Order
  7. {
  8. ASC,
  9. DESC
  10. }
  11. public static void FillList<T>(Transform container, List<T> list, ItemRenderer itemRenderer, int limit = int.MaxValue, Order order = Order.ASC)
  12. {
  13. int index = 0;
  14. if(list != null)
  15. {
  16. for(int i=0; i<list.Count; i++)
  17. {
  18. if (i < container.childCount) {
  19. ItemRenderer item = container.GetChild (i).GetComponent<ItemRenderer> ();
  20. item.gameObject.SetActive (true);
  21. item.data = list [i];
  22. if (order == Order.DESC)
  23. item.transform.SetAsFirstSibling ();
  24. } else {
  25. AddToList<T> (container, list [i], itemRenderer, limit, order);
  26. }
  27. index++;
  28. }
  29. }
  30. for(int i=index; i < container.childCount; i++)
  31. {
  32. container.GetChild (i).gameObject.SetActive (false);
  33. }
  34. }
  35. public static void AddToList<T>(Transform container, T data, ItemRenderer itemRenderer, int limit = int.MaxValue, Order order = Order.ASC)
  36. {
  37. ItemRenderer item = null;
  38. if (container.childCount >= limit) {
  39. if (order == Order.ASC)
  40. item = container.GetChild (0).GetComponent<ItemRenderer> ();
  41. else
  42. item = container.GetChild (container.childCount - 1).GetComponent<ItemRenderer> ();
  43. } else {
  44. item = GameObject.Instantiate<GameObject> (itemRenderer.gameObject).GetComponent<ItemRenderer> ();
  45. PopUpManager.AddToMainCanvas (item.gameObject, container);
  46. }
  47. item.gameObject.SetActive (true);
  48. if (order == Order.ASC)
  49. item.transform.SetAsLastSibling ();
  50. else
  51. item.transform.SetAsFirstSibling ();
  52. item.data = data;
  53. }
  54. public static void AddToScrollChatList<T>(Transform container, T data, ItemRenderer itemRenderer, int limit = int.MaxValue)
  55. {
  56. ItemRenderer item = container.GetChild (0).GetComponent<ItemRenderer> ();
  57. if (!item.gameObject.activeSelf) {
  58. item.transform.SetAsLastSibling ();
  59. } else {
  60. item = GameObject.Instantiate<GameObject> (itemRenderer.gameObject).GetComponent<ItemRenderer> ();
  61. PopUpManager.AddToMainCanvas (item.gameObject, container);
  62. }
  63. item.gameObject.SetActive (true);
  64. item.data = data;
  65. }
  66. public static void Remove<T>(Transform container, T data)
  67. {
  68. if (data == null)
  69. return;
  70. for(int i=0; i<container.childCount; i++)
  71. {
  72. ItemRenderer item = container.GetChild(i).GetComponent<ItemRenderer>();
  73. if(item.data != null && item.data.Equals(data))
  74. {
  75. item.transform.SetAsLastSibling ();
  76. item.gameObject.SetActive (false);
  77. return;
  78. }
  79. }
  80. }
  81. public static void HideAll(Transform container)
  82. {
  83. for(int i=0; i < container.childCount; i++)
  84. {
  85. container.GetChild (i).gameObject.SetActive (false);
  86. }
  87. }
  88. }