|
|
- using UnityEngine;
- using System.Collections;
-
- public class Radar : MonoBehaviour
- {
- //网格模型顶点数量
- private int VERTICES_COUNT;
- //大小
- public float scale = 1;
-
- [Tooltip("边数为数组长度减1")]
- //顶点数组
- private Vector3[] vertices = new Vector3[6] ;
- //三角形数组
- int[] triangles;
-
- //每条边的长度设置
- private float[] edgeSizes = new float[6];
- //基础长度
- public float baseSize = 0.01f;
-
- MeshFilter meshFilter;
- Mesh mesh;
-
- float pi = 3.1415f;
- void Start()
- {
- CreateMesh();
- SetVertices();
- }
-
- void OnGUI()
- {
- //if (meshFilter == null)
- //{
- // CreateMesh();
- // SetVertices();
- //}
- // Fresh(); // 这个是刷新
- //if (GUILayout.Button("Fresh"))
- //{
- // Fresh();
- //}
-
- //if (GUILayout.Button("Set"))
- //{
- // SetVerticeLength(10);
- //}
- //if (GUILayout.Button("SetEdgeSizes"))
- //{
- // SetEdgeSizes(10, 0.5f);
- //}
-
- }
-
- void CreateMesh()
- {
- meshFilter = (MeshFilter)GetComponent(typeof(MeshFilter)); //GameObject.Find("radar")
- mesh = meshFilter.mesh;
- }
-
- void SetVertices()
- {
- VERTICES_COUNT = vertices.Length;
- int triangles_count = VERTICES_COUNT - 1;
-
- triangles = new int[triangles_count * 3];
-
- //设定原点坐标
- vertices[0] = new Vector3(0, 0, 1);
- //首个在x轴上的坐标点
- vertices[1] = new Vector3(45, 0, 1);
- //每个三角形角度
- float everyAngle = 360 / triangles_count;
-
- for (int i = 1; i < vertices.Length; i++)
- {
- var angle = GetRadians(everyAngle * (i - 1));
- vertices[i] = new Vector3(45 * Mathf.Cos(angle), 45 * Mathf.Sin(angle), 1);
- }
-
- int idx = 0;
- int value = 0;
- for (int i = 0; i < triangles.Length; i++)
- {
- if (i % 3 == 0)
- {
- triangles[i] = 0;
- value = idx;
- idx++;
- }
- else
- {
- value++;
- if (value == VERTICES_COUNT)
- value = 1;
- // Debug.Log("value " + value);
- triangles[i] = value;
- }
- }
- }
-
- float GetRadians(float angle)
- {
- return pi / 180 * angle;
- }
-
- void Apply()
- {
- Vector3[] tmps = new Vector3[vertices.Length];
- for (int i = 0; i < vertices.Length; i++)
- {
- tmps[i] = vertices[i] * vertices[i].z * scale * (baseSize + edgeSizes[i]);
- }
- if (mesh == null) {
- CreateMesh();
- }
- mesh.vertices = tmps;
- mesh.triangles = triangles;
- }
-
-
- /// <summary>
- /// 设置几边形
- /// </summary>
- /// <param name="num"></param>
- public void SetVerticeLength(int num)
- {
- if (num>=3)
- {
- vertices = new Vector3[num + 1];
- edgeSizes = new float[num + 1];
- SetVertices();
- }
-
- }
-
- /// <summary>
- /// 设置每条边的值
- /// </summary>
- /// <param name="i"></param>
- /// <param name="value"></param>
- public void SetEdgeSizes(int i,float value)
- {
- if (edgeSizes.Length > i)
- {
- edgeSizes[i] = value;
- }
-
- }
-
-
- /// <summary>
- /// 刷新绘制
- /// </summary>
- public void Fresh()
- {
- Apply();
- }
- }
|