Unity 6.3
0 онлайн 78 гостей 3 в системе
Вход

Mesh Constructor

Declaration

public Mesh();

Описание

Создает новый пустой объект Mesh, который может быть динамически создан или изменен с помощью скрипта.

Конструктор Mesh создает пустую сетку без вершин, нормалей, UVs или треугольников. После создания вы можете заполнить сетку, назначив данные вершин, индексы треугольников и другие свойства. Это позволяет создавать процедурную геометрию и модифицировать данные сетки во время выполнения.

Примечание: При создании новой сетки, ее число подсеток и число сеток устанавливаются на 1.

using UnityEngine;

// This example creates a single triangle mesh from script. [RequireComponent(typeof(MeshFilter), typeof(MeshRenderer))] public class MeshCreationExample : MonoBehaviour { private Mesh m_Mesh; private Material m_Material;

void Start() { // Create an empty Mesh. m_Mesh = new Mesh(); m_Mesh.name = "Procedural Triangle";

// Populate the Mesh with vertices and triangles. m_Mesh.vertices = new Vector3[] { new Vector3(-1, -1, 0), new Vector3(1, -1, 0), new Vector3(0, 1, 0) };

m_Mesh.triangles = new int[] { 2, 1, 0 };

// Recalculate the normals to ensure proper lighting on the mesh. m_Mesh.RecalculateNormals();

// Assign the new Mesh to the MeshFilter component. MeshFilter meshFilter = GetComponent<MeshFilter>(); meshFilter.sharedMesh = m_Mesh; // Assign a default material to the MeshRenderer component if null. MeshRenderer meshRenderer = GetComponent<MeshRenderer>(); if (meshRenderer.sharedMaterial == null) { m_Material = new Material(Shader.Find("Unlit/Color")); meshRenderer.sharedMaterial = m_Material; } } void OnDestroy() { // Destroy the mesh to prevent memory leaks. if (m_Mesh != null) Destroy(m_Mesh);

if (m_Material != null) Destroy(m_Material); } }