You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
PlumberUltimateAds/Assets/AllIn1SpriteShader/Demo/Scripts/All1ShaderDemoController.cs

86 lines
3.5 KiB
C#

2 months ago
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<Image>().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; }
}
}