Como no dijiste a qué querías cambiar el color, daré un ejemplo vago con un color creado en el método.
El punto es tener una colección de colores y una duración total (como en el ejemplo que proporcionaré) o una duración entre cada uno (depende de usted).
Personalmente, no interpolo cosas en la actualización que sé que no voy a interpolar constantemente (la cámara es una excepción), por lo que uso corutinas para manejar eso.
En este ejemplo, divido la duración dada en el inspector por la cantidad de colores, y luego cambio el color real del iterador al siguiente color del iterador, y la duración será de la duración previamente empalmada. Aquí está la muestra:
public class ColorLerping : MonoBehaviour
{
public Color sampleColor; /// Just for debugging purposes.
public float lerpDuration;
public Color[] colors;
void Awake()
{
StartCoroutine(LerpColors());
}
private IEnumerator LerpColors()
{
if(colors.Length > 0)
{
/// Split the time between the color quantities.
float dividedDuration = lerpDuration / colors.Lenght;
for(int i = 0; i < colors.Length - 1; i++)
{
float t = 0.0f;
while(t < (1.0f + Mathf.Epsilon))
{
sampleColor = Color.Lerp(colors[i], colors[i + 1], t);
t += Time.deltaTime / dividedDuration;
yield return null;
}
// Since it is posible that t does not reach 1.0, force it at the end.
sampleColor = Color.Lerp(colors[i], colors[i + 1], 1.0f);
}
}
else yield return null; /// Do nothing if there are no colors.
}
}
Espero eso ayude.