Unity C # Я сделал список. Цвет меняется через 5 секунд. Я определил цвет, с которого начинается список ("_currentIndex = 0"). Первый цвет всегда должен быть тем, который я определил в начале. То, что у меня есть, означает, что каждый цвет в списке выбирается один за другим. После последнего цвета все возвращается к началу.
Я бы хотел, чтобы первый цвет всегда был одним и тем же, но каждый последующий был выбран случайным образом из списка. Это должен быть бесконечный цикл.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ColorCycler : MonoBehaviour
{
public Color[] Colors;
public float Speed = 5;
int _currentIndex;
Camera _cam;
bool _shouldChange = false;
private int randomColors;
void Start()
{
_cam = GetComponent<Camera>();
_currentIndex = 0;
SetColor(Colors[_currentIndex]);
}
public void SetColor(Color color)
{
_cam.backgroundColor = color;
}
public void Cycle()
{
_shouldChange = true;
}
void Update()
{
if (_shouldChange)
{
var startColor = _cam.backgroundColor;
//start from color with number
var endColor = Colors[0];
if (_currentIndex + 1 < Colors.Length)
{
endColor = Colors[_currentIndex + 1];
}
var newColor = Color.Lerp(startColor, endColor, Time.deltaTime * Speed);
SetColor(newColor);
if (newColor == endColor)
{
_shouldChange = false;
if (_currentIndex + 1 < Colors.Length)
{
_currentIndex++;
}
else
{
_currentIndex = 0;
}
}
}
}
}