Parameter | Description |
---|---|
a | The start color, returned when t = 0. |
b | The end color, returned when t = 1. |
t | The interpolation ratio. The ratio will not be clamped, and can be outside of the [0; 1] range. |
Color32
The color resulting from linear interpolation between and a
and b
.
Linearly interpolates between colors a
and b
using the interpolation ratio t
.
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
.
If t
is less than 0, or greater than 1, the result will be linearly extrapolated from a
and b
. For example, Color32.LerpUnclamped(new Color32(0, 0, 0, 0), new Color32(50, 50, 50, 50), 3)
will return a color given by new Color32(150, 150, 150, 150)
.
Since Color32
stores each color channel as a byte, unclamped interpolation may result in integer overflow or underflow, which will cause the interpolated value to wrap around and remain inside the range of a byte. For example, Color32.LerpUnclamped(new Color32(0, 0, 0, 0), new Color32(200, 200, 200, 200), 2)
will return a color given by new Color32(144, 144, 144, 144)
because (200 * 2) mod 256 = 144
.
The script below will set the color of MeshRenderer to the result of unclamped interpolation using parameters specified in the inspector. To use the script, attach it to a GameObject with a MeshRenderer.
using UnityEngine;
[RequireComponent(typeof(MeshRenderer))] public class ColorLerp : MonoBehaviour { public Color32 colorA = Color.white; public Color32 colorB = Color.red; public float interpolationRatio = 0.5f;
private Material material;
private void Start() { material = GetComponent<Renderer>().material; }
void Update() { material.color = Color32.LerpUnclamped(colorA, colorB, interpolationRatio); } }
Additional resources: Lerp.