using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class TextUnline : MaskableGraphic { private RectTransform target; private bool isChanged = false; protected override void Awake() { if (transform.parent != null) { target = transform.parent as RectTransform; } } private List vertlist = new List(); protected override void OnPopulateMesh(VertexHelper vh) { vh.Clear(); DrawUnderline(vh); } private void DrawUnderline(VertexHelper vh) { if (vertlist.Count < 1) return; for (int i = 0; i < vertlist.Count; i++) { vh.AddVert(vertlist[i]); } for (int i = 0; i < vertlist.Count; i+=4) { vh.AddTriangle(i, i + 1, i + 2); vh.AddTriangle(i + 1, i + 3, i + 2); } } public void SetUIVertex(Vector3 start,Vector3 end,float delta, float height,Color color) { UIVertex[] verts = new UIVertex[4]; Vector3 pos = Vector3.zero; pos.x = start.x;pos.y = start.y + delta; verts[0].position = pos; pos.x = end.x; verts[1].position = pos; pos.x = start.x;pos.y = pos.y + height; verts[2].position = pos; pos.x = end.x; verts[3].position = pos; for (int i = 0; i < 4; i++) { verts[i].color = color; verts[i].uv0 = Vector2.zero; vertlist.Add(verts[i]); } isChanged = true; } private void Update() { if (target != null) { rectTransform.sizeDelta = target.sizeDelta; rectTransform.localPosition = Vector3.zero; rectTransform.pivot = target.pivot; } else { if (transform.parent != null) { target = transform.parent as RectTransform; } } if (isChanged) { SetAllDirty(); isChanged = false; } } public void ClearVert() { vertlist.Clear(); isChanged = true; } }