NativeArray<T> 返回一个包含索引缓冲区数据的 NativeArray
。
从 MeshData
的索引缓冲区获取原始数据。
GetIndexData
返回一个指向原始索引缓冲区数据的直接“指针”,没有任何内存分配、数据复制或转换。您不需要释放返回的 NativeArray
,因为它不代表新的内存分配。
您需要了解确切的网格数据布局才能处理此数据,包括所有顶点属性的存在和格式。数据布局与 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); } } }