网上找了下没啥好的代码,自己结合资料优化了下,支持创建任意边数的雷达图

原理是采用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生成雷达图的更多相关文章

  1. echar生成雷达图

    function createRadarChart(indicatorData, personData) { var myChart = echarts.init(document.getElemen ...

  2. 用pChart生成雷达图图片

    需求 :由于工作需要,需要在一张背景图上添加这一张雷达图,之后图片可以在微信中长按保存.所以说我必须生成一张带有雷达图的图片第一反应是用百度echars雷达图做动态显示,之后截图.考虑到工作量和效率, ...

  3. 关于echarts生成雷达图的一些参数介绍

    export const industryFactorOption = { title: { text: '雷达图', textStyle: { color: 'rgba(221,221,221,1) ...

  4. Excel 2010高级应用-雷达图(六)

    Excel 2010高级应用-雷达图(六) 基本操作如下: 1.新建空白Excel文档,并命名雷达图 2.单击"插入",并找到雷达图图样 3.单击雷达图图样,在空白文档上生成图框, ...

  5. C# 使用GDI绘制雷达图

    最近项目要用C#实现画一个雷达图,搜了搜网上竟然找不到C#画雷达图的解决方案,那么自己实现一个吧 实现效果如下图: 代码如下: public static class RadarDemo { ; ; ...

  6. [python] 基于matplotlib实现雷达图的绘制

    雷达图(也称为蜘蛛图或星形图)是一种可视化视图,用于使用一致的比例尺显示三个或更多维度上的多元数据.并非每个人都是雷达图的忠实拥护者,但我认为雷达图能够以视觉上吸引人的方式比较不同类别各个特征的值.本 ...

  7. Mesh绘制雷达图(UGUI)

    参考资料:http://www.cnblogs.com/jeason1997/p/5130413.html ** 描述:雷达图 刷新 radarDate.SetVerticesDirty(); usi ...

  8. Silverlight 雷达图和一种特殊泡泡画法

    原文:Silverlight 雷达图和一种特殊泡泡画法 自上次发了雷达图,也没怎么说一下. 这次又做了一种图,继续共享一下,就是以一个点为中心,周围绕着几个点,用一个箭头与中心相连并带有某些信息.圆 ...

  9. 第三方Charts绘制图表四种形式:饼状图,雷达图,柱状图,直线图

    对于第三方框架Charts(Swift版本,在OC项目中需要添加桥接头文件),首先要解决在项目中集成的问题,集成步骤: 一.下载Charts框架 下载地址:https://github.com/dan ...

  10. 使用echart的雷达图的时候,如果文字越界的解决办法记录,标签文字自动换行

    使用echart的雷达图的时候,如果文字越界的解决办法记录,标签文字自动换行 前几天项目中有一个图表的是用echart生成的,遇到一个问题,就是在手机端显示的售时候,如果文字太长就会超出div,之前的 ...

随机推荐

  1. 【笔记】Python爬虫|网页数据异步加载(结合Selenium完成)

    文章目录 问题描述 1. 结合Selenium.Edge解析该网站搜索页面的数据 2. 结合lxml解析网页数据 3. 附加:不是异步加载的网页,结合requests直接请求数据 问题描述 一些网站会 ...

  2. LangChain4j比SpringAI强在哪?一文读懂

    LangChain4j 和 Spring AI 是 Java 生态中实现大模型应用开发的两个最重要的框架,但二者的区别是啥?生产级别又该使用哪种框架?令很多人犯了难,所以本文就来浅聊一下,希望给大家在 ...

  3. 在rk3588上部署InternVL系列

    在rk3588上部署InternVL2-1B 准备 首先要在hf上下载InternVL2-1B的模型传送门(镜像) git clone https://hf-mirror.com/OpenGVLab/ ...

  4. 鸿蒙NEXT(五):鸿蒙版React Native架构浅析

    @charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...

  5. PyPI 使用的国内源

    通过几次 pip 的使用,对于默认的 pip 源的速度实在无法忍受,于是便搜集了一些国内的pip源,如下:阿里云 http://mirrors.aliyun.com/pypi/simple/中国科技大 ...

  6. C++ 模板实参类型限制

    有时候我们编写一个模板,希望用户使用我们期望的类型来实例化它,就需要对实参进行检查,限制不满足条件的实例化版本,同时给出便于理解的编译时信息. 对于 C++20 后的版本,可以将条件包装为concep ...

  7. 前端预览和打印PDF的两种方式

    最近工作中遇到了一个需求,就是前端选择表格中的某一条数据去请求后端接口,后端返回的是一个PDF文件的下载地址,但是需求不希望用户下载下来再去打印,而是直接预览展示,然后就能打印. 一开始按照网上的方式 ...

  8. Django Web应用开发实战第二章

    一.基本配置信息 """ Django settings for myblog project. Generated by 'django-admin startproj ...

  9. [书籍精读]《你不知道的JavaScript(下卷)》精读笔记分享

    写在前面 书籍介绍:JavaScript这门语言简单易用,很容易上手,但其语言机制复杂微妙,即使是经验丰富的JavaScript开发人员,如果没有认真学习的话也无法真正理解.本套书直面当前JavaSc ...

  10. golang+vue3开发的一个im应用

    这是一個开源的前后端分离的IM网页应用. 简单的功能 支持微博登录 端对端消息推送.图片发送.表情包 语音功能 视频功能 支持离线消息推送 创建群聊 群聊消息推送 好友功能 响应式的前端界面支持pc与 ...