我正在使用Unity。我想随机更改图像,可能是通过按下按钮或触发事件。
我可以想到这样的解决方案:
public Image randomImage;
public Sprite s0;
public Sprite s1;
public Sprite s2;
public Sprite s3;
public Sprite[] images;
void Start(){
images = new Sprite[4];
images [0] = s0;
images [1] = s1;
images [2] = s2;
images [3] = s3;
}
void changeImage(){
Random rnd = new Random();
int num = rnd.Next(0, 4);
randomImage <Image> ().sprite = images[num];
}
然后我可以将想要更改的精灵拖动到 randomImage 中,并将四个图像拖到s0,s1,s2,s3中。 但是,我想要选择的图像数量远远大于4,可能是20。我不知道是否有更聪明的方法,而不是创建20个变量并将20个图像拖入其中。 谢谢。
答案 0 :(得分:4)
您需要使用UnityEngine.Random.Range
。而已。您不必创建它的新实例。
由于数组从0
开始,将0
传递给第一个参数,将数组长度传递给第二个参数。第二个参数是独占的,因此您不会超出范围异常。
不需要randomImage <Image> ()
,因为randomImage
已经是图片(public Image randomImage;
)。如果randomImage
是GameObject或任何其他类型,则应该这样做。
public Image randomImage;
public Sprite s0;
public Sprite s1;
public Sprite s2;
public Sprite s3;
public Sprite[] images;
void Start()
{
images = new Sprite[4];
images[0] = s0;
images[1] = s1;
images[2] = s2;
images[3] = s3;
}
void changeImage()
{
int num = UnityEngine.Random.Range(0, images.Length);
randomImage.sprite = images[num];
}