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; float start_time, end_time; do foreach (var (delay, lerp_time, new_material) in instructions) { last_material = renderer.material; start_time = Time.time; end_time = start_time + lerp_time; yield return new WaitForSeconds(delay); while (end_time >= Time.time) { renderer.material.Lerp(last_material, new_material , (Time.time - start_time) / lerp_time); yield return null; } renderer.material = new_material; } while (loop); } }