unity雷达图

该C#脚本在Unity环境中用于创建雷达图,根据提供的数据数组动态绘制图形。它首先定义了数据,然后计算每条边的角度和半径,接着在图形的RectTransform矩形区域内绘制点并连接它们,以形成雷达图形状,从而实现数据的可视化。
摘要由CSDN通过智能技术生成

这是一段使用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);
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值