# SetMesh(in UIMesh)

> Replace this draw's entire geometry in a single call: vertices, indices, and all extras channels.

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine.UIElements](/engine/6000.7/script-reference/unityengine/uielements.md)
* **Assembly:** UnityEngine.UIElementsModule

## SetMesh(UIMesh)

```csharp
public void SetMesh(in UIMesh mesh)
```

### Parameters

**** (\[UIMesh]\(/engine/6000.7/script-reference/unityengine/uielements/uimesh)):&#x20;

### Remarks

Atomic: all fields update together, so cross-field length invariants are guaranteed. Prefer this over per-slice setters when resizing the entire mesh.

Validation: every non-empty extras slice in `mesh` must have length equal to `mesh.vertices.Length`, AND its channel must be enabled on the panel's [ExtraVertexChannels](/engine/6000.7/script-reference/unityengine/uielements/extravertexchannels.md) mask. `mesh.indices.Length` must be a multiple of 3. If any check fails the call is rejected (this draw stays unchanged) and an error is logged.

Metadata (`renderType`, `phase`, `texture`, `userData`) is preserved.
