![]()
1 using System;
2 using System.Collections;
3 using System.Collections.Generic;
4 using UnityEngine;
5
6 public class Draw : MonoBehaviour
7 {
8 public Material Mat;
9 private List<Vector3> vertices;
10 private List<int> triangles;
11 private Mesh mesh;
12
13 private void Init()
14 {
15 mesh ??= new Mesh();
16 vertices ??= new List<Vector3>();
17 triangles ??= new List<int>();
18
19 }
20
21 void OnDrawGizmos()
22 {
23 Init();
24 DrawTriangle();
25
26 }
27
28 private void DrawTriangle()
29 {
30 // 一定要有材质,不然mesh看不见
31 if (Mat == null)
32 {
33 return;
34 }
35
36 vertices.Clear();
37 vertices.Add(Vector3.zero);
38 vertices.Add(new Vector3(0, 0, 1));
39 vertices.Add(new Vector3(1, 0, 0));
40
41 triangles.Clear();
42 triangles.Add(0);
43 triangles.Add(1);
44 triangles.Add(2);
45
46 mesh.SetVertices(vertices);
47 mesh.SetTriangles(triangles, 0);
48 mesh.RecalculateNormals();
49
50 for (int i = 0; i < Mat.passCount; i++)
51 {
52 if (Mat.SetPass(i))
53 {
54 Graphics.DrawMeshNow(mesh, Matrix4x4.identity);
55 }
56 }
57
58 }
59
60
61 }