using System.Linq; using UnityEngine; public class StatusLED : ActionAnimator { public MeshRenderer LED_R; public MeshRenderer LED_O; public MeshRenderer LED_G; public Material mat_LED_R_On; public Material mat_LED_R_Off; public Material mat_LED_O_On; public Material mat_LED_O_Off; public Material mat_LED_G_On; public Material mat_LED_G_Off; public override void AnimationEnd() { SetColor("End"); } public override void AnimationStart() { SetColor("Start"); } // Start is called once before the first execution of Update after the MonoBehaviour is created void Start() { var leds = GetComponentsInChildren(); LED_R = leds.First(x => x.name.Equals(nameof(LED_R))); LED_O = leds.First(x => x.name.Equals(nameof(LED_O))); LED_G = leds.First(x => x.name.Equals(nameof(LED_G))); LED_R.sharedMaterial = mat_LED_R_Off; LED_G.sharedMaterial = mat_LED_G_Off; LED_O.sharedMaterial = mat_LED_O_Off; } private void SetColor(string progStatus, string status = null) { LED_R.sharedMaterial = mat_LED_R_Off; LED_G.sharedMaterial = mat_LED_G_Off; LED_O.sharedMaterial = mat_LED_O_Off; switch (progStatus) { case "Start": LED_G.sharedMaterial = mat_LED_G_On; break; case "End": LED_O.sharedMaterial = mat_LED_O_On; break; default: LED_O.sharedMaterial = mat_LED_O_On; break; } } // Update is called once per frame void Update() { } }