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;
}
}
}
Ошибок нету, но ни одно изображение не появлялось. Я что-то делаю не так?
Ответы (1 шт):
Ваш Canvas, и его Render Mode скорее всего не настроен, исправьте на Screen Space - Camera. И вложите в Render Camera свою Camera. И отрегулируйте при необходимости Plane Distance.
Проверьте Order in Layer. Возможно что закрывает элементы.
Возможно, Вы отключаете при старте сам компонент 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 если это не цель вашей задачи


