stream | 要获取数据的顶点缓冲区流。默认值为 0。 |
NativeArray<T> 返回包含顶点缓冲区数据的 NativeArray
。
获取 MeshData
中给定顶点缓冲区流格式的原始数据。
GetVertexData
返回指向原始顶点缓冲区数据的直接“指针”,没有任何内存分配、数据复制或转换。您无需处置返回的 NativeArray
,因为它不代表新的内存分配。
您需要了解确切的网格数据布局才能执行此操作:例如,所有网格顶点属性的存在和格式。数据布局与 Mesh.SetVertexBufferData 中的数据布局匹配。
如果 MeshData
可写,并且您已使用 Mesh.MeshData.SetVertexBufferParams 设置了顶点缓冲区大小和布局,您可以将顶点数据直接写入数组。如果 MeshData
是只读的,则数组是只读的。
其他资源:Mesh.AllocateWritableMeshData、Mesh.AcquireReadOnlyMeshData、Mesh.MeshData.SetVertexBufferParams。
using UnityEngine; public class ExampleScript : MonoBehaviour { struct Vertex { public Vector3 pos; public Vector2 uv; } void Start() { var mesh = new Mesh(); mesh.vertices = new[] {Vector3.one, Vector3.up}; mesh.uv = new[] {Vector2.right, Vector2.up}; using (var data = Mesh.AcquireReadOnlyMeshData(mesh)) { var verts = data[0].GetVertexData<Vertex>(); // prints "pos (1.0, 1.0, 1.0) uv (1.0, 0.0)" and "pos (0.0, 1.0, 0.0) uv (0.0, 1.0)" foreach (var v in verts) Debug.Log($"pos {v.pos} uv {v.uv}"); } } }