版本: Unity 6 (6000.0)
语言英语
  • C#

Mesh.SetSubMeshes

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读用户提出的每项修改建议,并在适用时进行更新。

关闭

提交失败

由于某些原因,您的修改建议无法提交。请在几分钟后<a>重试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

声明

public void SetSubMeshes(SubMeshDescriptor[] desc, int start, int count, Rendering.MeshUpdateFlags flags);

声明

public void SetSubMeshes(SubMeshDescriptor[] desc, Rendering.MeshUpdateFlags flags);

声明

public void SetSubMeshes(List<SubMeshDescriptor> desc, int start, int count, Rendering.MeshUpdateFlags flags);

声明

public void SetSubMeshes(List<SubMeshDescriptor> desc, Rendering.MeshUpdateFlags flags);

声明

public void SetSubMeshes(NativeArray<T> desc, int start, int count, Rendering.MeshUpdateFlags flags);

声明

public void SetSubMeshes(NativeArray<T> desc, Rendering.MeshUpdateFlags flags);

参数

desc 一个包含子网格数据描述符的数组或列表。
start desc 中的数组或列表中获取的第一个元素的索引。
count desc 中的数组或列表中获取的元素数量。
flags (可选) 控制函数行为的标志,请参阅 MeshUpdateFlags

描述

设置定义此 Mesh 中所有子网格的信息,替换任何现有的子网格。

请注意,SetSubMeshesSetSubMeshSubMeshDescriptorSetIndexBufferData 旨在获得最佳性能。这些函数作用于底层的网格数据结构,涉及原始索引缓冲区、顶点缓冲区和网格子集数据。当您使用这些方法时,Unity 执行很少的数据验证,因此您必须确保数据有效。

特别是,您必须确保 SubMeshDescriptor 索引范围和 SubMeshDescriptor.topology 值被设置为正确的值。子网格索引(indexStart 和 indexCount)不得与任何其他子网格索引重叠。

有关从脚本为 Mesh 分配数据的更简单方法和更高级方法之间区别的信息,请参阅 Mesh

除非传递了 MeshUpdateFlags.DontRecalculateBounds 标志,否则 SetSubMeshes 会自动计算 SubMeshDescriptor-boundsSubMeshDescriptor-firstVertexSubMeshDescriptor-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

其他资源:subMeshCountGetSubMeshSetSubMeshSetIndexBufferParamsSetIndexBufferDataMeshUpdateFlags