DropItemName.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. /// <summary>
  6. /// 描述:掉落道具名称
  7. /// 作者:WJ
  8. /// </summary>
  9. public class DropItemName : MonoBehaviour
  10. {
  11. /// <summary>
  12. /// 自身Transform
  13. /// </summary>
  14. private RectTransform mRectTransform = null;
  15. /// <summary>
  16. /// 父节点RectTransform
  17. /// </summary>
  18. private RectTransform mRootRectTransform = null;
  19. private Text nameText = null;
  20. private string itemName = "";
  21. private int quality = 0;
  22. private Transform target = null;
  23. /// <summary>
  24. /// 初始化
  25. /// </summary>
  26. /// <param name="role"></param>
  27. /// <param name="val"></param>
  28. public void Init(RectTransform rect, Transform _target, string _name, int _quality)
  29. {
  30. mRootRectTransform = rect;
  31. mRectTransform = transform as RectTransform;
  32. itemName = _name;
  33. quality = _quality;
  34. target = _target;
  35. nameText = transform.Find("Text").GetComponent<Text>();
  36. RefrashName();
  37. }
  38. /// <summary>
  39. /// 刷新名称
  40. /// </summary>
  41. private void RefrashName()
  42. {
  43. Color col = Color.white;
  44. switch (quality)
  45. {
  46. case 0:
  47. case 1:
  48. break;
  49. case 2:
  50. col = new Color(0x1B / 255.0f, 0xFF / 255.0f, 0x00 / 255.0f);
  51. break;
  52. case 3:
  53. col = new Color(0x00 / 255.0f, 0x35 / 255.0f, 0xFF / 255.0f);
  54. break;
  55. case 4:
  56. col = new Color(0xC2 / 255.0f, 0x00 / 255.0f, 0xFF / 255.0f);
  57. break;
  58. case 5:
  59. col = new Color(0xFF / 255.0f, 0x8D / 255.0f, 0x00 / 255.0f);
  60. break;
  61. }
  62. nameText.text = itemName;
  63. nameText.color = col;
  64. }
  65. // Update is called once per frame
  66. void Update()
  67. {
  68. if (target == null)
  69. {
  70. Destroy(gameObject);
  71. return;
  72. }
  73. mRectTransform.anchoredPosition = World2UI(target.position + Vector3.up * 0.5f);
  74. }
  75. /// <summary>
  76. /// 世界坐标转成UI坐标
  77. /// </summary>
  78. /// <param name="wpos">世界坐标</param>
  79. /// <returns>UI坐标</returns>
  80. public Vector2 World2UI(Vector3 wpos)
  81. {
  82. if (Camera.main == null)
  83. {
  84. return Vector2.zero;
  85. }
  86. //世界坐标 -> ViewPort坐标
  87. Vector2 viewPos = Camera.main.WorldToViewportPoint(wpos);
  88. //ViewPort坐标 -> UGUI坐标 
  89. return new Vector2(mRootRectTransform.rect.width * viewPos.x, mRootRectTransform.rect.height * viewPos.y);
  90. }
  91. }