Когда вы делаете это:
int randomIndex = Random.Range(0, positions.Count);
answersButtons[i].transform.position = positions[randomIndex];
Вы можете получить одно и то же значение, когда вы меняете, поэтому некоторые кнопки перекрываются.
Вы хотите либо:
Попробуйте вместо этого:
void ShuffleAnswersList()
{
// Notice this v--------------------v to avoid out of range exception
for (int i = 0; i < positions.Count && i < answersButtons.Count; i++)
{
// always use i ------V---------------------------------V
answersButtons[i].transform.position = positions[i];
}
}
Конечно, сначала обязательно вызовите свой метод Shuffle
. Этот метод должен быть исправлен, Random.Range(min, max)
может вернуть max
(и обеспечить исключение вне диапазона)
// shuffle positions
public void Shuffle()
{
for (int i = 0; i < positions.Count; i++)
{
// notice this -------------------------------------V
int rnd = Random.Range(0, positions.Count - 1);
Vector2 tempGO = positions[rnd];
positions[rnd] = positions[i];
positions[i] = tempGO;
}
}