# SetNormals

> Set the normals of the Mesh.

## Definition

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

## SetNormals(List\<Vector3>)

Set the normals of the Mesh.

```csharp
public void SetNormals(List<Vector3> inNormals)
```

### Parameters

**** (\[List\<Vector3>]\(https\://learn.microsoft.com/dotnet/api/system.collections.generic.list-1)): Per-vertex normals.

### Remarks

Additional Resources: [Mesh.normals](/engine/6000.5/script-reference/unityengine/mesh/normals.md) property.

## SetNormals(List\<Vector3>, int, int, MeshUpdateFlags)

Sets the vertex normals of the Mesh, using a part of the input array.

```csharp
public void SetNormals(List<Vector3> inNormals, int start, int length, MeshUpdateFlags flags)
```

### Parameters

**** (\[List\<Vector3>]\(https\://learn.microsoft.com/dotnet/api/system.collections.generic.list-1)): Per-vertex normals.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Index of the first element to take from the input array.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Number of elements to take from the input array.**** (\[MeshUpdateFlags]\(/engine/6000.5/script-reference/unityengine/rendering/meshupdateflags)): Flags controlling the function behavior, see [MeshUpdateFlags](/engine/6000.5/script-reference/unityengine/rendering/meshupdateflags.md).

### Remarks

This method behaves as if you called SetNormals with an array that is a slice of the whole array, starting at `start` index and being of a given `length`. The resulting Mesh has `length` amount of vertices.

## SetNormals(Vector3\[])

Set the normals of the Mesh.

```csharp
public void SetNormals(Vector3[] inNormals)
```

### Parameters

**** (\[Vector3\[]]\(/engine/6000.5/script-reference/unityengine/vector3)): Per-vertex normals.

### Remarks

Additional Resources: [Mesh.normals](/engine/6000.5/script-reference/unityengine/mesh/normals.md) property.

## SetNormals(Vector3\[], int, int, MeshUpdateFlags)

Sets the vertex normals of the Mesh, using a part of the input array.

```csharp
public void SetNormals(Vector3[] inNormals, int start, int length, MeshUpdateFlags flags)
```

### Parameters

**** (\[Vector3\[]]\(/engine/6000.5/script-reference/unityengine/vector3)): Per-vertex normals.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Index of the first element to take from the input array.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Number of elements to take from the input array.**** (\[MeshUpdateFlags]\(/engine/6000.5/script-reference/unityengine/rendering/meshupdateflags)): Flags controlling the function behavior, see [MeshUpdateFlags](/engine/6000.5/script-reference/unityengine/rendering/meshupdateflags.md).

### Remarks

This method behaves as if you called SetNormals with an array that is a slice of the whole array, starting at `start` index and being of a given `length`. The resulting Mesh has `length` amount of vertices.

## SetNormals\<T>(NativeArray\<T>)

Set the normals of the Mesh.

```csharp
public void SetNormals<T>(NativeArray<T> inNormals) where T : struct
```

### Parameters

**** (\[NativeArray\<T>]\(/engine/6000.5/script-reference/unity/collections/nativearray1)): Per-vertex normals.

### Remarks

Additional Resources: [Mesh.normals](/engine/6000.5/script-reference/unityengine/mesh/normals.md) property.

## SetNormals\<T>(NativeArray\<T>, int, int, MeshUpdateFlags)

Sets the vertex normals of the Mesh, using a part of the input array.

```csharp
public void SetNormals<T>(NativeArray<T> inNormals, int start, int length, MeshUpdateFlags flags) where T : struct
```

### Parameters

**** (\[NativeArray\<T>]\(/engine/6000.5/script-reference/unity/collections/nativearray1)): Per-vertex normals.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Index of the first element to take from the input array.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Number of elements to take from the input array.**** (\[MeshUpdateFlags]\(/engine/6000.5/script-reference/unityengine/rendering/meshupdateflags)): Flags controlling the function behavior, see [MeshUpdateFlags](/engine/6000.5/script-reference/unityengine/rendering/meshupdateflags.md).

### Remarks

This method behaves as if you called SetNormals with an array that is a slice of the whole array, starting at `start` index and being of a given `length`. The resulting Mesh has `length` amount of vertices.
