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

Mesh.SetSubMesh

建议更改

成功!

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

关闭

提交失败

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

关闭

取消

切换到手册

声明

public void SetSubMesh(int index, Rendering.SubMeshDescriptor desc, Rendering.MeshUpdateFlags flags);

参数

index 子网格索引。参见 subMeshCount。超出范围的索引会抛出异常。
desc 子网格数据。
flags 控制函数行为的标志,参见 MeshUpdateFlags

描述

设置网格子网格的信息。

请注意,SetSubMeshSubMeshDescriptorSetIndexBufferData 旨在供希望获得最大性能的高级用户使用,因为它们操作的是底层网格数据结构,这些结构主要用于原始索引缓冲区、顶点缓冲区和网格子集数据。使用这些方法时,Unity 执行很少的数据验证,因此您必须确保数据有效。

特别是,您必须确保 SubMesh 索引范围和拓扑设置为正确的值。SubMesh 索引(indexStart 和 indexCount)不得与任何其他 SubMesh 索引重叠。

有关从脚本向网格分配数据的更简单和更高级方法之间的区别的信息,请参阅 Mesh 页面上的说明。

SubMeshDescriptor-boundsSubMeshDescriptor-firstVertexSubMeshDescriptor-vertexCountSubMeshDescriptor 值由 SetSubMesh 自动计算,除非传递了 MeshUpdateFlags.DontRecalculateBounds 标志。请注意,这仅适用于 SubMesh 的边界。您必须调用 Mesh.RecalculateBounds 来重新计算网格本身的边界。

常规用法模式为

var mesh = new Mesh();

// setup vertex buffer data mesh.vertices = ...;

// set index buffer mesh.SetIndexBufferParams(...); mesh.SetIndexBufferData(...);

// setup information about mesh subsets mesh.subMeshCount = ...; mesh.SetSubMesh(index, ...);

// update bounds of the mesh mesh.RecalculateBounds();

有关为每个子网格设置哪些数据的详细信息,请参阅 SubMeshDescriptor

其他资源:subMeshCountGetSubMeshSetIndexBufferParamsSetIndexBufferDataMeshUpdateFlags