Me ha resultado bastante difícil encontrar una solución a esto en los documentos de Unity.
Color.Lerp(Color a, Color b, float t)
es una función que cambia gradualmente un color de acuerdo con un paso t, dándole el valor final del Color b.
¿Cómo cambio entre varios colores uno tras otro?
Un enfoque que se puede tomar con múltiples transiciones de color es aprovechar un degradado .
Al exponer una variable pública de este tipo, un desarrollador puede usar el Inspector para iniciar el Editor de degradado para diseñar un degradado que contenga cualquier cantidad de colores. Este editor le permite utilizar los selectores de color de la unidad, la colocación de las teclas de color / alfa y los gradientes de guardar / cargar.
Una vez diseñado, el
Gradient.Evaluate()
método aceptará un flotador en el rango de 0-1 para devolver el color apropiado.Desafortunadamente, la API para construir un gradiente mediante programación no es tan elegante .
fuente
Así que este es el código que terminé usando para saltar entre tres colores míos, espero que sea útil para cualquiera que decida buscar esto.
fuente
Siento que puede haber una mejor solución. La única razón por la que vería pasar de un color a otro es si quisieras cambiar continuamente el tono ... http://en.wikipedia.org/wiki/Hue
Aquí se explica cómo convertir HSV a RGB: http://en.wikipedia.org/wiki/HSL_and_HSV#From_HSV
Con esto puede usar colores HSV, simplemente cambie el tono y luego convierta a RGB. Además, con Color.Lerp, tienes el problema de la inconsistencia. Si pasas de naranja a amarillo, luego a verde, verás que el color comienza a ir a amarillo muy rápidamente, luego comienza a disminuir a medida que se acerca al amarillo, luego se acelera nuevamente una vez que pasa el amarillo y pasa al verde. Por lo tanto, ralentizará el cambio de color en cada punto al que esté yendo. Creo que cambiar el tono sería mucho más efectivo y, a la larga, dará un mejor efecto. :)
fuente
¿Qué tal si escribes tu propia versión, que aprovecha
Color.Lerp()
?Una versión muy simple que toma 3 colores y coloca el segundo en el medio podría verse así:
fuente
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:
Espero eso ayude.
fuente