这是一段使用Unity引擎编写的C#脚本。主要实现一个雷达图,根据提供的数据绘制出对应形状,用于数据可视化。
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
public class RadarTrap : Graphic
{
//雷达图的数据,用数组存储
public float[] arr = new float[] {1, 1, 1, 1, 1};
private int num = 5;
//覆写OnPopulateMesh方法,用于绘制图形
protected override void OnPopulateMesh(VertexHelper vh)
{
//清空顶点缓存
vh.Clear();
//计算每条边的夹角
float ang = (2 * Mathf.PI) / num;
//获取雷达图所在的矩形框
Rect rect = GetComponent<RectTransform>().rect;
//计算雷达图最大半径
float r = rect.width > rect.height ? rect.width / 2 : rect.height / 2;
//计算每个数据点半径大小
float b = r / arr.Max();
//添加中心点
vh.AddVert(new Vector3(0, 0, 0), Color.white, Vector2.zero);
//循环遍历每个数据点,添加对应的顶点,并连接相邻的两个点
for (int i = 0; i < num; i++)
{
float x = Mathf.Sin(ang * i) * arr[i] * b;
float y = Mathf.Cos(ang * i) * arr[i] * b;
vh.AddVert(new Vector3(x, y, 0), Color.white, Vector2.zero);
if (i==0)
{
vh.AddTriangle(0, num, 1);
}
else
{
vh.AddTriangle(0,i,i+1);
}
}
}
}