# normals

> The normals of the Mesh.

## Definition

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

```csharp
public Vector3[] normals { get; set; }
```

### Remarks

If the Mesh contains no normals, an empty array is returned.

```csharp
// Rotate the normals by speed every frame

using UnityEngine;

public class ExampleClass : MonoBehaviour
{
    float speed = 100.0f;

    // Update is called once per frame
    void Update()
    {
        // obtain the normals from the Mesh
        Mesh mesh = GetComponent<MeshFilter>().mesh;
        Vector3[] normals = mesh.normals;

        // edit the normals in an external array
        Quaternion rotation = Quaternion.AngleAxis(Time.deltaTime * speed, Vector3.up);
        for (int i = 0; i < normals.Length; i++)
            normals[i] = rotation * normals[i];

        // assign the array of normals to the mesh
        mesh.normals = normals;
    }
}
```

**Note:** To make changes to the [Mesh.normals](/engine/6000.0/script-reference/unityengine/mesh/normals.md) it is important to copy the normals from the [Mesh](/engine/6000.0/script-reference/unityengine/mesh.md). Once the [Mesh.normals](/engine/6000.0/script-reference/unityengine/mesh/normals.md) have been copied and changed the [Mesh.normals](/engine/6000.0/script-reference/unityengine/mesh/normals.md) can be reassigned back to the [Mesh](/engine/6000.0/script-reference/unityengine/mesh.md).

**Note:** [Mesh.normals](/engine/6000.0/script-reference/unityengine/mesh/normals.md) are assigned to vertices, not triangles.
