Newer
Older
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);
}
}