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); } }