# subMeshCount

> The number of sub-meshes inside the Mesh object.

## Definition

* **Type:** Property
* **Namespace:** [UnityEngine](/engine/6000.0/script-reference/unityengine.md)
* **Assembly:** UnityEngine.CoreModule

```csharp
public int subMeshCount { get; set; }
```

### Remarks

Each sub-mesh corresponds to a [Material](/engine/6000.0/script-reference/unityengine/material.md) in a [Renderer](/engine/6000.0/script-reference/unityengine/renderer.md), such as [MeshRenderer](/engine/6000.0/script-reference/unityengine/meshrenderer.md) or [SkinnedMeshRenderer](/engine/6000.0/script-reference/unityengine/skinnedmeshrenderer.md). A sub-mesh consists of a list of triangles, which refer to a set of vertices. Vertices can be shared between multiple sub-meshes.

Additional Resources: [Mesh.GetTriangles](/engine/6000.0/script-reference/unityengine/mesh/gettriangles.md), [Mesh.SetTriangles](/engine/6000.0/script-reference/unityengine/mesh/settriangles.md).

```csharp
using UnityEngine;

public class Example : MonoBehaviour
{
    void Start()
    {
        Mesh mesh = GetComponent<MeshFilter>().mesh;
        Debug.Log("Submeshes: " + mesh.subMeshCount);
    }
}
```

For advanced lower-level sub-mesh and mesh data manipulation functions, see [SubMeshDescriptor](/engine/6000.0/script-reference/unityengine/rendering/submeshdescriptor.md), [Mesh.SetSubMesh](/engine/6000.0/script-reference/unityengine/mesh/setsubmesh.md), [Mesh.SetIndexBufferParams](/engine/6000.0/script-reference/unityengine/mesh/setindexbufferparams.md), [Mesh.SetIndexBufferData](/engine/6000.0/script-reference/unityengine/mesh/setindexbufferdata.md).

Note that changing subMeshCount to a smaller value than it was previously resizes the Mesh index buffer to be smaller. The new index buffer size is set to [SubMeshDescriptor.indexStart](/engine/6000.0/script-reference/unityengine/rendering/submeshdescriptor/indexstart.md) of the first removed sub-mesh.
