Unity 属性雷达图

1using System.Collections.Generic; 2using UnityEngine; 3 4[RequireComponent(typeof(MeshFilter),typeof(MeshRenderer))] 5public class Radar : MonoBehaviour 6{ 7 [Tooltip("属性边长")] 8 public float radius = 45; 9 [Range(0, 1), Tooltip("当前属性百分比")] 10 public List<float> m_attributes; 11 12 private float m_cell_angle; 13 private List<Vector3> m_vertices = new List<Vector3>(); 14 private int[] m_triangles; 15 16 private MeshRenderer m_render; 17 private MeshFilter m_filter; 18 private Mesh m_mesh; 19 20 private void Awake() 21 { 22 m_render = GetComponent<MeshRenderer>(); 23 m_filter = GetComponent<MeshFilter>(); 24 m_mesh = new Mesh(); 25 m_filter.mesh = m_mesh; 26 if (m_render.material == null) 27 { 28 Debug.LogWarning("请添加Material"); 29 } 30 } 31 32 void Start() 33 { 34 if (m_attributes.Count != 0) 35 { 36 m_cell_angle = 360 / m_attributes.Count; 37 InitMeshData(); 38 } 39 } 40 41 private void Update() 42 { 43 if (Input.GetKeyDown(KeyCode.Space)) 44 { 45 Refresh(); 46 } 47 } 48 49 void InitMeshData() 50 { 51 #region 设置顶点 52 m_vertices.Clear(); 53 m_vertices.Add(new Vector3(0, 0, 1)); 54 m_vertices.Add(new Vector3(radius, 0, 1)); 55 56 for (int i = 0; i < m_attributes.Count; i++) 57 { 58 float angle = Mathf.Deg2Rad * m_cell_angle * (i + 1); 59 Vector3 point = new Vector3(radius * Mathf.Cos(angle), radius * Mathf.Sin(angle), 1); 60 m_vertices.Add(point); 61 } 62 #endregion 63 64 #region 设置三角形 65 m_triangles = new int[m_attributes.Count * 3]; 66 67 int index = 0; 68 int value = 0; 69 for (int i = 0; i < m_triangles.Length; i++) 70 { 71 if (i % 3 == 0) 72 { 73 m_triangles[i] = 0; 74 value = index; 75 index++; 76 } 77 else 78 { 79 value++; 80 if (value == m_attributes.Count + 1) 81 value = 1; 82 m_triangles[i] = value; 83 } 84 } 85 #endregion 86 } 87 88 void Refresh() 89 { 90 Vector3[] vertices = m_vertices.ToArray(); 91 92 for (int i = 2; i < m_vertices.Count; i++) 93 { 94 vertices[i] = m_vertices[i] * m_attributes[i - 2]; 95 } 96 97 m_mesh.vertices = vertices; 98 m_mesh.triangles = m_triangles; 99 m_mesh.RecalculateNormals(); 100 } 101}

View Code

转载:https://blog.csdn.net/zjw1349547081/article/details/53667690

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

Unity 属性雷达图 - HelloWorld