Version: 2022.3

Mesh.SetSubMesh

切换到手册
public void SetSubMesh (int index, Rendering.SubMeshDescriptor desc, Rendering.MeshUpdateFlags flags);

参数

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

描述

设置有关网格的子网格的信息。

请注意,/SetSubMesh/、SubMeshDescriptorSetIndexBufferData 面向旨在实现最高性能的高级用户,因为它在主要适用于原始索引缓冲区、顶点缓冲区和网格子集数据的基础网格数据结构上运行。Unity 使用这些方法可执行非常少的数据验证,因此必须确保数据有效。

In particular, you must ensure that the SubMesh index range and topology are set to correct values. SubMesh indices, both indexStart and indexCount, must not overlap with any other SubMesh indices.

For information about the difference between the simpler and more advanced methods of assigning data to a Mesh from script, see the notes on the Mesh page.

The SubMeshDescriptor-bounds, SubMeshDescriptor-firstVertex and SubMeshDescriptor-vertexCount values of SubMeshDescriptor are calculated automatically by SetSubMesh, unless MeshUpdateFlags.DontRecalculateBounds flag is passed. Note that this only applies to the bounds of the SubMesh. You must call Mesh.RecalculateBounds to recalculate the bounds of the Mesh itself.

常规使用模式为:

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