Unity随机改变图像

时间:2017-01-09 11:34:53

标签: c# unity3d 2d

我正在使用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个图像拖入其中。 谢谢。

1 个答案:

答案 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];
}