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<UIVertex> vertlist = new List<UIVertex>();
|
|
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;
|
}
|
}
|