4 가지 색상이 있습니다. 플레이어가 같은 색으로 2 번 연속으로 나올 수 없도록 만들고 싶습니다. 플레이어가 오브젝트와 충돌하면 RandomColor()
이 호출됩니다. 따라서이 함수는 게임 중에 여러 번 호출되며 때로는 플레이어가 자신의 색을 변경하지 않습니다.매번 난수를 생성하고 마지막 숫자를 포함하지 않음
using UnityEngine;
public class ColorManager : MonoBehaviour {
public SpriteRenderer player;
public string playerColor;
public Color[] colors = new Color[4];
private void Awake()
{
RandomColor();
}
public void RandomColor()
{
int index = Random.Range(0, 4);
switch (index)
{
case 0:
player.color = colors[0]; //colors[0] is orange
playerColor = "orange";
break;
case 1:
player.color = colors[1]; //colors[1] is pink
playerColor = "pink";
break;
case 2:
player.color = colors[2]; //colors[2] is blue
playerColor = "blue";
break;
case 3:
player.color = colors[3]; //colors[3] is purple
playerColor = "purple";
break;
}
}
}
while 루프를 사용해 보았습니다.하지만 while 루프에서는 동일한 색상을 때때로 두 번 받게되므로 분명히 잘못하고 있습니다. 누군가가 문제를 파악하고 설명하는 방법/이유를 설명하면 좋을 것입니다. 문제에 많은 시간을 할애하여 매우 궁금합니다.
youz에는 4 색이 있습니다. 새로운 색을 선택할 때 플레이어 색이 현재 가지고있는 색과 다를 때까지 임의 번호를 다시 지정하십시오. –
더 나은 기술 : 현재 유효한 색만 포함 된 모음을 만든 다음 해당 컬렉션에서 임의의 요소를 선택하십시오. 불변의 컬렉션을 사용하면 도움이 될 것입니다. –