【发布时间】:2018-06-06 16:45:08
【问题描述】:
我有 4 种颜色。我想让它让玩家不能连续两次出现相同的颜色。当玩家与物体发生碰撞时,会调用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种颜色,在选择新颜色时重新reroll,直到播放器颜色与他目前拥有的那个不同.... span>
-
一种更好的技术:创建一个仅包含当前合法颜色的集合,然后从该集合中选择一个随机元素。使用不可变集合会有所帮助。