desc | 一个包含子网格数据描述符的数组或列表。 |
start | 从 desc 中的数组或列表中获取的第一个元素的索引。 |
count | 从 desc 中的数组或列表中获取的元素数量。 |
flags | (可选) 控制函数行为的标志,请参阅 MeshUpdateFlags。 |
设置定义此 Mesh 中所有子网格的信息,替换任何现有的子网格。
请注意,SetSubMeshes、SetSubMesh、SubMeshDescriptor 和 SetIndexBufferData 旨在获得最佳性能。这些函数作用于底层的网格数据结构,涉及原始索引缓冲区、顶点缓冲区和网格子集数据。当您使用这些方法时,Unity 执行很少的数据验证,因此您必须确保数据有效。
特别是,您必须确保 SubMeshDescriptor 索引范围和 SubMeshDescriptor.topology 值被设置为正确的值。子网格索引(indexStart 和 indexCount)不得与任何其他子网格索引重叠。
有关从脚本为 Mesh 分配数据的更简单方法和更高级方法之间区别的信息,请参阅 Mesh。
除非传递了 MeshUpdateFlags.DontRecalculateBounds 标志,否则 SetSubMeshes
会自动计算 SubMeshDescriptor-bounds、SubMeshDescriptor-firstVertex 和 SubMeshDescriptor-vertexCount 的值。请注意,这仅适用于子网格的边界。您必须调用 Mesh.RecalculateBounds 来重新计算 Mesh 本身的边界。
一般的用法模式是
var mesh = new Mesh();
// setup vertex buffer data mesh.vertices = ...;
// set index buffer mesh.SetIndexBufferParams(...); mesh.SetIndexBufferData(...);
// setup information about mesh subsets SubMeshDescriptor[] sm = new SubMeshDescriptor[] {...} mesh.SetSubMeshes(sm);
// update bounds of the mesh mesh.RecalculateBounds();
有关为每个子网格设置哪些数据的详细信息,请参阅 SubMeshDescriptor。
其他资源:subMeshCount、GetSubMesh、SetSubMesh、SetIndexBufferParams、SetIndexBufferData、MeshUpdateFlags。