Mesh.MeshData.GetIndexData
Declaration
public NativeArray<T> GetIndexData();Возвращаемое значение
NativeArray<T> Возвращает NativeArray, содержащий данные буфера индекса.
Описание
Получает необработанные данные из индексного буфера MeshData.
GetIndexData возвращает прямую "указатель" на данные сырого индекса буфера без каких-либо выделений памяти, копирования данных или преобразования. Вам не нужно уничтожать возвращенные NativeArray, поскольку это не представляет собой новое выделение памяти.
Вам нужно знать точное расположение данных Mesh для работы с этими данными, включая наличие и форматы всех атрибутов вершин. Расположение данных соответствует расположению из Mesh.SetIndexBufferData. Как правило, меши с 16-битным форматом индекса используют ushort тип данных, и Меши с 32-битным форматом индекса используют int тип данных.
Если MeshData может быть записан, и вы установили размер и формат индексного буфера с помощью Mesh.MeshData.SetIndexBufferParams, вы можете записать индексы непосредственно в массив. Если MeshData только для чтения, массив только для чтения.
Дополнительные ресурсы: Mesh.AllocateWritableMeshData, Mesh.AcquireReadOnlyMeshData, Mesh.MeshData.SetIndexBufferParams.
using UnityEngine; using UnityEngine.Rendering; public class ExampleScript : MonoBehaviour { void Start() { var mesh = new Mesh(); mesh.vertices = new[] {Vector3.one, Vector3.zero, Vector3.up}; mesh.indexFormat = IndexFormat.UInt16; mesh.triangles = new[] {2, 0, 1}; using (var data = Mesh.AcquireReadOnlyMeshData(mesh)) { var indices = data[0].GetIndexData<ushort>(); // prints 2, 0, 1 foreach (var i in indices) Debug.Log(i); } } }
Дополнительные ресурсы: ,Mesh.SetIndexBufferParams,, ,Mesh.SetIndexBufferData,, ,GetVertexData,, ,Mesh.AcquireReadOnlyMeshData,.