Home > Mobile >  Random.Range only giving one output
Random.Range only giving one output

Time:06-23

I have a problem. I'm trying to randomize the background image whenever I start the game but the output from "BackgroundImageNumber" is always 1 no matter how many times i reroll. Thanks in advance.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class MenuBackgroundChooser : MonoBehaviour
{
    Image BackgroundImage;
    int BackgroundImageNumber;
    
    public Sprite Background1;
    public Sprite Background2;
    
    void Awake()
    {
        BackgroundImage = GetComponent<Image>();
    }
    
    void Start()
    {
        //Set the second nuber to the number of images and increase the switch when adding a background
        BackgroundImageNumber = Random.Range(1, 2);
        
        Debug.Log(BackgroundImageNumber);
        
        switch(BackgroundImageNumber)
        {
            case 1:
                BackgroundImage.sprite = Background1;
                break;
            case 2:
                BackgroundImage.sprite = Background2;
                break;
        }
    }
}

CodePudding user response:

If you check the documentation for Unity's Random.Range(int,int) method: https://docs.unity3d.com/ScriptReference/Random.Range.html you will see that it is declared as public static int Range(int minInclusive, int maxExclusive), note that the second number is maxExclusive.

Therefore in order to get random value 1 or 2 you should use it like this: Random.Range(1,3)

  • Related