Как построить график в unity3d?

Пользователь

от leila.dickinson , в категории: Другие , 6 месяцев назад

Как построить график в unity3d?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от delphine_bartoletti , 6 месяцев назад

@leila.dickinson 

В Unity3D можно построить график, используя систему координат и отображение точек/линий на этой системе. Вот пример кода на C#, который создаст график на плоскости XY:

  1. Создайте пустой объект на сцене и прикрепите к нему следующий скрипт:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
using UnityEngine;

public class Graph : MonoBehaviour
{
    public int resolution = 10; // количество точек на графике
    public float size = 1f; // размер графика

    private void Awake()
    {
        var meshFilter = gameObject.AddComponent<MeshFilter>(); // добавляем компонент MeshFilter
        meshFilter.mesh = GenerateGraph(); // генерируем и назначаем сгенерированную сетку графика
    }

    private Mesh GenerateGraph()
    {
        var mesh = new Mesh();

        // Генерация координат точек
        var vertices = new Vector3[resolution * resolution];
        var i = 0;
        for (int x = 0; x < resolution; x++)
        {
            for (int y = 0; y < resolution; y++)
            {
                float fx = size * (x / (float)(resolution - 1) - 0.5f);
                float fy = size * (y / (float)(resolution - 1) - 0.5f);

                vertices[i++] = new Vector3(fx, fy, 0);
            }
        }

        // Генерация треугольников для линий
        var triangles = new int[(resolution - 1) * (resolution - 1) * 6]; // 2 треугольника на каждый квадрат
        i = 0;
        for (int x = 0; x < resolution - 1; x++)
        {
            for (int y = 0; y < resolution - 1; y++)
            {
                int bottomLeft = x + y * resolution;
                int bottomRight = (x + 1) + y * resolution;
                int topLeft = x + (y + 1) * resolution;
                int topRight = (x + 1) + (y + 1) * resolution;

                triangles[i++] = bottomLeft;
                triangles[i++] = topLeft;
                triangles[i++] = topRight;

                triangles[i++] = bottomLeft;
                triangles[i++] = topRight;
                triangles[i++] = bottomRight;
            }
        }

        mesh.vertices = vertices;
        mesh.triangles = triangles;
        mesh.RecalculateNormals(); // для динамических объектов лучше пересчитать нормали

        return mesh;
    }
}


  1. Прикрепите этот скрипт к пустому объекту на сцене.
  2. Вы можете настроить параметры графика (resolution и size), чтобы он соответствовал вашим требованиям.
  3. Запустите вашу сцену, и вы должны увидеть график на плоскости XY.


Обратите внимание, что данный код будет генерировать график в плоскости XY от -size/2 до size/2. Если вам нужно отобразить другую функцию или график в других координатах, вам придется изменить код соответствующим образом.