ugui生成雷达图
网上找了下没啥好的代码,自己结合资料优化了下,支持创建任意边数的雷达图
原理是采用CanvasRender创建Mesh


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(CanvasRenderer))]
public class UGUI_Radar : MonoBehaviour
{
[SerializeField] private Material mat;//材质球,自行创建,shader选择 UI/Default
[SerializeField] private Texture _tex;//贴图,可选
private CanvasRenderer _render;
public List<int> dataList = new List<int>(10);//每个点的数据
[SerializeField] private float radarSize = 10f;//雷达图的长度
// Start is called before the first frame update
void Start()
{
_render = GetComponent<CanvasRenderer>();
UpdateRadarVisualData();
}
// Update is called once per frame
void Update()
{
}
/// <summary>
/// 生成雷达图
/// </summary>
public void UpdateRadarVisualData()
{
int _length = dataList.Count;
if (_length < 3)
{
Debug.LogError("边数不能小于3");
return;
}
Mesh mesh = new Mesh();
Vector3[] vertices = new Vector3[_length + 1];
Vector2[] uv = new Vector2[_length + 1];
int[] triangles = new int[3 * _length];//一个三角形,三个点,5个图形,乘以5
float angleIncrement = 360f / _length;//度数
vertices[0] = Vector3.zero;
for (int i = 1; i <= _length; i++)
{
vertices[i] = Quaternion.Euler(0, 0, -angleIncrement * (i - 1)) * Vector3.up * radarSize * dataList[i-1];
}
uv[0] = Vector2.zero;
for (int i = 1; i <= _length; i++)
{
uv[i] = Vector2.one;
}
/*
triangles[0] = 0;
triangles[1] = 1;
triangles[2] = 2;
triangles[3] = 0;
triangles[4] = 2;
triangles[5] = 3;
triangles[6] = 0;
triangles[7] = 3;
triangles[8] = 4;
triangles[9] = 0;
triangles[10] = 4;
triangles[11] = 5;
triangles[12] = 0;
triangles[13] = 5;
triangles[14] = 1;
*/
//注释规律总结
for (int i = 0; i < _length * 3; i++)
{
if (i%3 == 0)
{
triangles[i] = 0;
}
else
{
if ((i-1)%3 == 0)
{
triangles[i] = (i - 1) / 3 + 1;
}
else
{
triangles[i] = (i - 2) / 3 + 2;
}
}
//最终值为1
if (i == _length * 3 - 1)
{
triangles[i] = 1;
}
}
mesh.vertices = vertices;
mesh.uv = uv;
mesh.triangles = triangles;
_render.SetMesh(mesh);
_render.SetMaterial(mat, _tex);
}
}
ugui生成雷达图的更多相关文章
- echar生成雷达图
function createRadarChart(indicatorData, personData) { var myChart = echarts.init(document.getElemen ...
- 用pChart生成雷达图图片
需求 :由于工作需要,需要在一张背景图上添加这一张雷达图,之后图片可以在微信中长按保存.所以说我必须生成一张带有雷达图的图片第一反应是用百度echars雷达图做动态显示,之后截图.考虑到工作量和效率, ...
- 关于echarts生成雷达图的一些参数介绍
export const industryFactorOption = { title: { text: '雷达图', textStyle: { color: 'rgba(221,221,221,1) ...
- Excel 2010高级应用-雷达图(六)
Excel 2010高级应用-雷达图(六) 基本操作如下: 1.新建空白Excel文档,并命名雷达图 2.单击"插入",并找到雷达图图样 3.单击雷达图图样,在空白文档上生成图框, ...
- C# 使用GDI绘制雷达图
最近项目要用C#实现画一个雷达图,搜了搜网上竟然找不到C#画雷达图的解决方案,那么自己实现一个吧 实现效果如下图: 代码如下: public static class RadarDemo { ; ; ...
- [python] 基于matplotlib实现雷达图的绘制
雷达图(也称为蜘蛛图或星形图)是一种可视化视图,用于使用一致的比例尺显示三个或更多维度上的多元数据.并非每个人都是雷达图的忠实拥护者,但我认为雷达图能够以视觉上吸引人的方式比较不同类别各个特征的值.本 ...
- Mesh绘制雷达图(UGUI)
参考资料:http://www.cnblogs.com/jeason1997/p/5130413.html ** 描述:雷达图 刷新 radarDate.SetVerticesDirty(); usi ...
- Silverlight 雷达图和一种特殊泡泡画法
原文:Silverlight 雷达图和一种特殊泡泡画法 自上次发了雷达图,也没怎么说一下. 这次又做了一种图,继续共享一下,就是以一个点为中心,周围绕着几个点,用一个箭头与中心相连并带有某些信息.圆 ...
- 第三方Charts绘制图表四种形式:饼状图,雷达图,柱状图,直线图
对于第三方框架Charts(Swift版本,在OC项目中需要添加桥接头文件),首先要解决在项目中集成的问题,集成步骤: 一.下载Charts框架 下载地址:https://github.com/dan ...
- 使用echart的雷达图的时候,如果文字越界的解决办法记录,标签文字自动换行
使用echart的雷达图的时候,如果文字越界的解决办法记录,标签文字自动换行 前几天项目中有一个图表的是用echart生成的,遇到一个问题,就是在手机端显示的售时候,如果文字太长就会超出div,之前的 ...
随机推荐
- 【工具】you-get + ffmpeg|视频下载+音频提取
一.原理: you-get下载,ffmpeg音视频分离. 这两个都是命令行工具. you-get安装(无python环境请参考python详细安装教程): pip3 install --upgrade ...
- P4516 [JSOI2018] 潜入行动 题解
题意: 给定一棵无根树,要求给树上 \(k\) 个点标记,使得所有点都至少与一个被标记的点相邻.(注意自己被标记不代表与标记相邻) 思路 考虑树形DP. 套路地设 \(f_{u,i,0/1,0/1}\ ...
- netty发送socket短连接请求,自定义报文头
package com.chinaums.japi.util; import io.netty.bootstrap.Bootstrap; import io.netty.buffer.ByteBuf; ...
- 宝塔面板部署java springboot项目
前言 1.此文章用的是腾讯云的云服务器,2H4G,centos7.6,宝塔面板7.9.0 2.安装好宝塔面板,这一过程就不说了,懂得都懂 3.以下准备工作仅为MyAuth需要,如果您的springbo ...
- 「Log」2023.8.22 小记
序幕 早上不到七点到校,6bit 早就到了. 写博客写博客写博客. \(\texttt{8:21}\):把 LCT 的博客写查不多了,SAM 的还是再咕咕咕,先打代码. 学长讲题,LCT 的,讲完吃饭 ...
- Mac os的防火墙导致开的热点手机连不上
在工位上用Mac给手机开热点用,结果今天手机一直连不上Mac开的热点,最后把Mac的防火墙关了就能让手机连上了,连上了再把防火墙打开也不影响连接.
- Linux系统配置windows可访问的共享文件夹
一.简单说明 某些情况下,我们需要配置Linux系统的目录为共享文件夹,windows下可以直接访问.这里可以直接安装samba进行.(samba是一款软件,主要提供cifs协议,基于文件系统传输) ...
- 化学数据分析AI实验室?ChatMoney帮你打造
本文由 ChatMoney团队出品 AI确实是个好东西,但AI到底是有什么用?其实很多人都没搞明白.AI如果在某个行业用的好,是能带来很大经济价值的.就拿AI在化学应用来说,AI在化工领域上的应用和化 ...
- 一文读懂:开源大数据调度系统Taier1.2版本新增的「工作流」到底是什么?
一.什么是工作流? 在阐述什么是工作流之前,先说一下工作流和普通任务的区别,在于依赖视图. 普通任务本身他只会有自己的dag图,依赖视图是无边界的,不可控的,而工作流则是把整个工作流都展示出来,是有边 ...
- Aug. 2023 普及组模拟赛 2
题面 T1 地址 Meaning 给定一个字符串,判断是否合法.若不合法,则将其变为合法字符串. Solution 情况较少,直接枚举每个字符判断.实现时应注意: 题目强调了数据保证字符串中存在且仅存 ...