Image.enabled в Unity не работает

В 2D игре которую я делаю есть код который выбирает случайное число от 1-го до 5-ти, потом из 5 изображений должно будет запуститься одно привязанное к определенной цифре.

public class Canvas_1 : MonoBehaviour
{
    public RawImage Q;
    public RawImage W;
    public RawImage E;
    public RawImage F;
    public RawImage B;
    public Image Yes;
    public Image Heck;
   public static System.Random RNG = new System.Random();
   int QTE = RNG.Next(1,6);

    void Start()
    {
        Q.enabled = false;
        W.enabled = false;
        E.enabled = false;
        F.enabled = false;
        B.enabled = false;
        Yes.enabled = false;
        Heck.enabled = false;

        if (QTE == 1)
        {
            Q.enabled = true;
        }
        else if (QTE == 2)
        {
            W.enabled = true;
        }
        else if (QTE == 3)
        {
            E.enabled = true;
        }
        else if (QTE == 4)
        {
            F.enabled = true;
        }
        else if (QTE == 5)
        {
            B.enabled = true;
        }

    }

}

Ошибок нету, но ни одно изображение не появлялось. Я что-то делаю не так?

введите сюда описание изображения

Вот изображение иерархии и инспектора Image которые попросили. Надеюсь это поможет


Ответы (1 шт):

Автор решения: Alemkhan Utepkaliev

Ваш Canvas, и его Render Mode скорее всего не настроен, исправьте на Screen Space - Camera. И вложите в Render Camera свою Camera. И отрегулируйте при необходимости Plane Distance.

Проверьте Order in Layer. Возможно что закрывает элементы.

Canvas

Возможно, Вы отключаете при старте сам компонент Image, а вместе с этим скорее всего у Вас отключен объект, вы пытаетесь включить компонент Image а GameObject отключен, поэтому ничего и не получается. Вам нужно либо включать/отключать именно компонент Image и не отключать GameObject или отключать GameObject затем его включать, но не трогать компонент Image.

Если Вам нужен объект попробуйте

Q.gameObject.SetActive(true);

Вот как это реализовать для вашего варианта.

public Image Q;

public static System.Random RNG = new System.Random();
int QTE = RNG.Next(1, 6);

void Start()
{
    if (QTE == 1)
    {
        Q.gameObject.SetActive(true);
    }
}

В таком варианте у меня получилось показать объект, у которого был включён компонент Image. Не работайте с отключением компонента отдельно от GameObject если это не цель вашей задачи

→ Ссылка