项目需求:UI上任意点击几个点,最外围的点围成的图形
代码示例:将点传入方法中即可
using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// 绘制多边形图案
/// </summary>
public class PolygonUIMesh : Graphic
{
public RectTransform[] rects;
// 使用 SetVerticesDirty() 在数据变化时标记 UI 为脏
protected override void OnEnable()
{
base.OnEnable();
SetVerticesDirty();
}
/// <summary>
/// 根据 rects 位置 绘制 Mesh
/// </summary>
/// <param name="vh"></param>
protected override void OnPopulateMesh(VertexHelper vh)
{
if (rects == null || rects.Length == 0)
{
return;
}
vh.Clear();
// 几何图形的顶点,根据子节点坐标确定顶点
foreach (RectTransform rect in rects)
{
vh.AddVert(rect.localPosition, color, Vector2.zero);
}
for (int i = 0; i < rects.Length - 1; i++)
{
// 几何图形中的三角形
vh.AddTriangle(0, i, i + 1);
}
}
}