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;
}
}
}
}
}
答案 0 :(得分:0)
如果您只想从列表中选择一个随机元素,则只需选择一个随机索引即可。
Random random = new Random();
int randomIndex = random.Next(Colors.Count);
color = Colors[randomIndex];