UGUI雷达图
来源:互联网 发布:淘宝onlyanna老公小苏 编辑:程序博客网 时间:2024/04/29 16:53
using UnityEngine;using UnityEngine.UI;using System.Collections;using System.Collections.Generic;using System;/// <summary>/// 绘制五边形雷达图,可转换多边形雷达图/// 以下是五边形的顶点示意图,012为一个三角形,023为一个三角形,034为一个三角形,/// 045为一个三角形,051为一个三角形,五个三角形拼接变成五边形/// /// 3/// /// 1 0 5/// /// 2 4/// </summary>public class UGUIDrawRadar : Graphic{ //顶点的坐标,顶点数量必须大于2 public List<Vector2> vertexList = new List<Vector2>(); //雷达图的五个分数 public float[] score = new float[5]; //雷达图的半径 public float radius = 5f; //雷达图最大分数 float maxScore =100; //雷达图最小分数 float minScore = 0; /// <summary> /// /// </summary> /// <param name="vh"></param> protected override void OnPopulateMesh(VertexHelper vh) { base.OnPopulateMesh(vh); List<UIVertex> targetVertexList = new List<UIVertex>(); int triangleCount = vertexList.Count - 2; //三角形 构成 for (int i = 0; i < triangleCount; i++) { for (int j = 0; j < 3; j++) //三角形的三个点 { UIVertex vertex = new UIVertex(); if (j == 0) { vertex.position = vertexList[0]; } else { vertex.position = vertexList[i + j]; } vertex.color = color; targetVertexList.Add(vertex); } } //最后一个三角形 051 for (int k = 0; k < 3; k++) { UIVertex vertex = new UIVertex(); if (k == 0) { vertex.position = vertexList[0]; } else if (k == 1) { vertex.position = vertexList[1]; } else if (k == 2) { vertex.position = vertexList[5]; } vertex.color = color; targetVertexList.Add(vertex); } vh.Clear(); vh.AddUIVertexTriangleStream(targetVertexList); } /// <summary> /// 设置雷达图绘制顶点 /// </summary> void SetVertex() { vertexList.Clear(); vertexList.Add(Vector2.zero); for (int i = 0; i < score.Length; i++) { var angle = i*2*Mathf.PI/5;//角度换算 vertexList.Add(new Vector2(radius * Mathf.Sin(angle) * ResetScore(score[i]), radius * Mathf.Cos(angle) * ResetScore(score[i])) ); } } /// <summary> /// 分数限制 /// </summary> /// <param name="sco"></param> /// <returns></returns> float ResetScore(float sco) { float score; score = sco; if (sco > maxScore) { score = maxScore; } if (sco < minScore) { score = minScore; } return score; } /// <summary> /// 设置雷达图的五个分数 /// </summary> /// <param name="scores_00"></param> /// <param name="scores_01"></param> /// <param name="scores_02"></param> /// <param name="scores_03"></param> /// <param name="scores_04"></param> public void SetScores(float scores_00, float scores_01, float scores_02,float scores_03, float scores_04) { score[0] = scores_00; score[1] = scores_01; score[2] = scores_02; score[3] = scores_03; score[4] = scores_04; SetVertex(); // Debug.Log("SetScores"); } /// <summary> /// 雷达图截屏 /// </summary> public void CaptureScreen() { Application.CaptureScreenshot(string.Format("{0}\\最终分数_{1}x{2}_{3}.png", Application.streamingAssetsPath, Screen.width, Screen.height, ReturnDate())); Debug.Log("截图放在" + Application.streamingAssetsPath + "路径下"); } /// <summary> /// 截图时间 /// </summary> /// <returns></returns> string ReturnDate() { string data; string dataYear; string dataMonth; string dataDay; string dataHour; string dataMin; string dataSecond; dataYear = System.DateTime.Now.Year.ToString(); dataDay = System.DateTime.Now.Day.ToString(); dataMonth = System.DateTime.Now.Month.ToString(); dataHour = System.DateTime.Now.Hour.ToString(); dataMin = System.DateTime.Now.Minute.ToString(); dataSecond = System.DateTime.Now.Second.ToString(); data = dataYear + "_" + dataMonth + "_" + dataDay + "_" + dataHour + "" + dataMin + "" + dataSecond; return data; }}
阅读全文
0 0
- UGUI雷达图
- UGUI雷达图
- UGUI雷达图
- Mesh绘制雷达图(UGUI)
- 在Unity中使用uGUI绘制自定义图形(饼状图 雷达图)
- 雷达图
- [资源分享][UGUI][Unity好文章]如何用unity实现像DOTA2那样的多边形数据雷达图
- OWC11绘制雷达图
- Flex RadarChart 雷达图
- OWC11绘制雷达图
- Excel雷达图
- EXTJS radarChart雷达图
- Android 自定义雷达图
- 5.1 雷达图
- python 画雷达图
- iOS雷达图
- android雷达图
- Tableau绘制雷达图
- 软考常考知识点整理-V型生命周期模型
- Qt 事件过滤器
- 萤石视频接口(tp后台)
- 空间数据shp md gdb用sde连接
- JDBC事务和JTA事务的区别
- UGUI雷达图
- 23种设计模式及解释(中英文对照), 以及有实例源码参考
- Android自定义指示器时间轴
- JVM实用参数(七)CMS收集器
- Android蓝牙开发【十】A2DP源码分析
- [Office] 段落间距调整
- 使用嵌套类/临时类保存数据
- Java | 可变参数列表
- JAVA-ACE-架构师系列视频课程- RocketMQ(上)