using UnityEngine; using UnityEngine.UI; namespace AllIn1SpriteShader { public class All1ShaderDemoController : MonoBehaviour { [SerializeField] private DemoCircleExpositor[] expositors = null; [SerializeField] private Text expositorsTitle = null, expositorsTitleOutline = null; public float expositorDistance; private int currExpositor; [SerializeField] private GameObject background = null; private Material backgroundMat; [SerializeField] private float colorLerpSpeed = 0; private Color[] targetColors; private Color[] currentColors; void Start() { currExpositor = 0; SetExpositorText(); for (int i = 0; i < expositors.Length; i++) expositors[i].transform.position = new Vector3(0, expositorDistance * i, 0); backgroundMat = background.GetComponent().material; targetColors = new Color[4]; targetColors[0] = backgroundMat.GetColor("_GradTopLeftCol"); targetColors[1] = backgroundMat.GetColor("_GradTopRightCol"); targetColors[2] = backgroundMat.GetColor("_GradBotLeftCol"); targetColors[3] = backgroundMat.GetColor("_GradBotRightCol"); currentColors = targetColors.Clone() as Color[]; } void Update() { GetInput(); currentColors[0] = Color.Lerp(currentColors[0], targetColors[(0 + currExpositor) % targetColors.Length], colorLerpSpeed * Time.deltaTime); currentColors[1] = Color.Lerp(currentColors[1], targetColors[(1 + currExpositor) % targetColors.Length], colorLerpSpeed * Time.deltaTime); currentColors[2] = Color.Lerp(currentColors[2], targetColors[(2 + currExpositor) % targetColors.Length], colorLerpSpeed * Time.deltaTime); currentColors[3] = Color.Lerp(currentColors[3], targetColors[(3 + currExpositor) % targetColors.Length], colorLerpSpeed * Time.deltaTime); backgroundMat.SetColor("_GradTopLeftCol", currentColors[0]); backgroundMat.SetColor("_GradTopRightCol", currentColors[1]); backgroundMat.SetColor("_GradBotLeftCol", currentColors[2]); backgroundMat.SetColor("_GradBotRightCol", currentColors[3]); } private void GetInput() { if (Input.GetKeyDown(KeyCode.LeftArrow) || Input.GetKeyDown(KeyCode.A)) { expositors[currExpositor].ChangeTarget(-1); } else if (Input.GetKeyDown(KeyCode.RightArrow) || Input.GetKeyDown(KeyCode.D)) { expositors[currExpositor].ChangeTarget(1); } else if (Input.GetKeyDown(KeyCode.UpArrow) || Input.GetKeyDown(KeyCode.W)) { ChangeExpositor(-1); } else if (Input.GetKeyDown(KeyCode.DownArrow) || Input.GetKeyDown(KeyCode.S)) { ChangeExpositor(1); } } private void ChangeExpositor(int offset) { currExpositor += offset; if (currExpositor > expositors.Length - 1) currExpositor = 0; else if (currExpositor < 0) currExpositor = expositors.Length - 1; SetExpositorText(); } private void SetExpositorText() { expositorsTitle.text = expositors[currExpositor].name; expositorsTitleOutline.text = expositors[currExpositor].name; } public int GetCurrExpositor() { return currExpositor; } } }