using System.Collections; using System.Collections.Generic; using UnityEngine; public static class RendererExtensions { public static IEnumerator ProgrammMaterialChange(this Renderer renderer, IEnumerable<(float delay, float lerp_time, Material new_material)> instructions, bool loop = false) { Material last_material; do foreach (var (delay, lerp_time, new_material) in instructions) { yield return new WaitForSeconds(delay); last_material = renderer.material; for (IEnumerator<float> lerper = MathfExtensions.LerpInTime(0, 1, lerp_time) ; lerper.MoveNext();) { renderer.material.Lerp(last_material, new_material , lerper.Current); yield return null; } } while (loop); } }