Unity雷达图绘制

如图所示:

下面是脚本:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
//雷达图
public class Day2Test : MaskableGraphic
{
    public Texture2D texture;
    public override Texture mainTexture => texture;

    [Range(0,5)]public float[] arr = { 5, 5, 5, 5, 5 };
    protected override void OnPopulateMesh(VertexHelper vh)
    {
        base.OnPopulateMesh(vh);
        vh.Clear();
        Rect rect = rectTransform.rect;
        float r = rect.width<rect.height ? rect.width/2 : rect.height/2;
        float hu = 2 * Mathf.PI / arr.Length;
        float max = arr.Max();
        float bl = r / max;

        vh.AddVert(Vector3.zero, color, new Vector2(0.5f, 0.5f));
        for (int i = 0; i < arr.Length; i++)
        {
            float x = MathF.Sin(hu*i)*bl*arr[i];
            float y = MathF.Cos(hu*i)*bl*arr[i];
            float uvx = (x + r) / (2 * r);
            float uvy = (y + r) / (2 * r);
            vh.AddVert(new Vector3(x, y, 0), color, new Vector2(uvx, uvy));
            if(i==0)
            {
                vh.AddTriangle(0, arr.Length, 1);
            }
            else
            {
                vh.AddTriangle(0, i, i + 1);
            }
        }
        
    }
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值