UI_NumberFontComponment.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine.UI;
  5. /// <summary>
  6. /// 自定义图片数字
  7. /// </summary>
  8. public class UI_NumberFontComponment : MonoBehaviour
  9. {
  10. /// <summary>
  11. /// 数字对象集合
  12. /// </summary>
  13. private Dictionary<string, GameObject> elements = new Dictionary<string, GameObject>();
  14. /// <summary>
  15. /// 当前数
  16. /// </summary>
  17. private int _curNum = -1;
  18. /// <summary>
  19. /// 设置
  20. /// </summary>
  21. public int CurrentNum
  22. {
  23. get
  24. {
  25. return _curNum;
  26. }
  27. set
  28. {
  29. if (_curNum != value)
  30. {
  31. _curNum = value;
  32. if (value < 0)
  33. {
  34. _curNum = 0;
  35. }
  36. onStarNumChanged();
  37. }
  38. }
  39. }
  40. /// <summary>
  41. /// 显示星星啦啦啦
  42. /// </summary>
  43. private void onStarNumChanged()
  44. {
  45. elements.Clear();
  46. //先清理掉其他不需要的
  47. for (int i = this.transform.childCount - 1; i >= 0; i--)
  48. {
  49. Transform rc = this.transform.GetChild(i);
  50. if (rc.name.IndexOf("Clone") < 0)
  51. {
  52. if (rc.name == "X" || rc.name == "+" || rc.name == "-")
  53. {
  54. }
  55. else
  56. {
  57. rc.gameObject.GetComponent<LayoutElement>().ignoreLayout = true;
  58. rc.gameObject.SetActive(false);
  59. elements.Add(rc.name, rc.gameObject);
  60. }
  61. continue;
  62. }
  63. else
  64. {
  65. Destroy(rc.gameObject);
  66. }
  67. }
  68. char[] arr = CurrentNum.ToString().ToCharArray();
  69. foreach (char c in arr)
  70. {
  71. int id = System.Convert.ToInt32(c);
  72. if (!elements.ContainsKey(c.ToString()))
  73. {
  74. continue;
  75. }
  76. GameObject go = elements[c.ToString()];
  77. ////创建新的
  78. GameObject card = (GameObject)Instantiate(go);
  79. card.transform.SetParent(this.transform);
  80. card.transform.localScale = Vector3.one;
  81. card.transform.localPosition = Vector3.zero;
  82. card.GetComponent<LayoutElement>().ignoreLayout = false;
  83. card.SetActive(true);
  84. }
  85. }
  86. }