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

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,.