# Lerp

> Linearly interpolates between colors a and b using the interpolation ratio t.

## Definition

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

## Lerp(Color32, Color32, float)

Linearly interpolates between colors `a` and `b` using the interpolation ratio `t`.

```csharp
public static Color32 Lerp(Color32 a, Color32 b, float t)
```

### Parameters

**** (\[Color32]\(/engine/6000.3/script-reference/unityengine/color32)): The start color, returned when t = 0.**** (\[Color32]\(/engine/6000.3/script-reference/unityengine/color32)): The end color, returned when t = 1.**** (\[float]\(https\://learn.microsoft.com/dotnet/api/system.single)): The interpolation ratio. Will be clamped to the range \[0; 1].

### Returns

| Type                                                              | Description                                                            |
| ----------------------------------------------------------------- | ---------------------------------------------------------------------- |
| [Color32](/engine/6000.3/script-reference/unityengine/color32.md) | The color resulting from linear interpolation between and `a` and `b`. |

### Remarks

`t` is clamped to be between 0 and 1. When `t` is 0, the function returns `a`. When `t` is 1, the function returns `b`.

The code sample sets the color of a GameObject's material to a value between white and black, based on the amount of time that has elapsed.

```csharp
using UnityEngine;

public class ColorLerp : MonoBehaviour
{
    Color32 lerpedColor = Color.white;
    Renderer renderer;

    void Start()
    {
        renderer = GetComponent<Renderer>();
    }

    void Update()
    {
        lerpedColor = Color32.Lerp(Color.white, Color.black, Mathf.PingPong(Time.time, 1));
        renderer.material.color = lerpedColor;
    }
}
```

Additional Resources: [Color32.LerpUnclamped](/engine/6000.3/script-reference/unityengine/color32/lerpunclamped.md).

## Lerp(Color32, Color32, float)

Linearly interpolates between colors `a` and `b` using the interpolation ratio `t`.

```csharp
public static Color32 Lerp(in Color32 a, in Color32 b, float t)
```

### Parameters

**** (\[Color32]\(/engine/6000.3/script-reference/unityengine/color32)): The start color, returned when t = 0.**** (\[Color32]\(/engine/6000.3/script-reference/unityengine/color32)): The end color, returned when t = 1.**** (\[float]\(https\://learn.microsoft.com/dotnet/api/system.single)): The interpolation ratio. Will be clamped to the range \[0; 1].

### Returns

| Type                                                              | Description                                                            |
| ----------------------------------------------------------------- | ---------------------------------------------------------------------- |
| [Color32](/engine/6000.3/script-reference/unityengine/color32.md) | The color resulting from linear interpolation between and `a` and `b`. |

### Remarks

`t` is clamped to be between 0 and 1. When `t` is 0, the function returns `a`. When `t` is 1, the function returns `b`.

The code sample sets the color of a GameObject's material to a value between white and black, based on the amount of time that has elapsed.

```csharp
using UnityEngine;

public class ColorLerp : MonoBehaviour
{
    Color32 lerpedColor = Color.white;
    Renderer renderer;

    void Start()
    {
        renderer = GetComponent<Renderer>();
    }

    void Update()
    {
        lerpedColor = Color32.Lerp(Color.white, Color.black, Mathf.PingPong(Time.time, 1));
        renderer.material.color = lerpedColor;
    }
}
```

Additional Resources: [Color32.LerpUnclamped](/engine/6000.3/script-reference/unityengine/color32/lerpunclamped.md).
