TrafficLights.cs 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public enum LightColor { Red, Yellow, Green, None }
  5. public class TrafficLights : MonoBehaviour {
  6. public LightColor activeLight;
  7. private MeshRenderer mr;
  8. private Shader defShader, unlitShader;
  9. private void Start() {
  10. mr = GetComponent<MeshRenderer>();
  11. defShader = Shader.Find("Standard");
  12. unlitShader = Shader.Find("Unlit/Color");
  13. SetLight(activeLight);
  14. }
  15. public void SetLight(LightColor color) {
  16. // mat 1 : green, mat 2 : yellow, mat 3 : red
  17. int activeIndex = 0;
  18. switch (color) {
  19. case LightColor.Green:
  20. activeIndex = 1;
  21. break;
  22. case LightColor.Yellow:
  23. activeIndex = 2;
  24. break;
  25. case LightColor.Red:
  26. activeIndex = 3;
  27. break;
  28. }
  29. for(int i = 1; i < 4; i++) {
  30. mr.materials[i].shader = activeIndex == i ? unlitShader : defShader;
  31. }
  32. }
  33. }