Растяжение Image во всю ширину экрана
Всем привет!
У меня есть image, который должен растягиваться во всю ширину экрана (Через привязки делать не вариант), делаю я это через скрипт, изменяя ReactTransform:
gameObject.GetComponent<ReactTransform>().sizeDelta = new Vector2(Display.widgth, height);
Данный скрипт отлично работает, и изменяет параметр width в ReactTransform. Проблема в том, что картинка не растягивается так, как это должно быть. Например, в эдиторе я ставлю размер экрана 720x1200(720 - ширина), ReactTransform'y присваивается значение 720, но картинка почемуто не растягивается на весь экран, она остаётся по середине (Привязка у неё стоит к центру), если я вручную начинаю изменять её то для заполнения всей ширины экрана, ей требуется присвоить гораздо большее значение, нежели то значение, которое возвращает Display.width, почему это происходит? И как можно отследить "настоящие" размеры canvas
Ответы (2 шт):
Указание размера через редактор самый правильный вариант, причем с использованием AspectRation для сохранения пропорций при любом соотношении сторон экрана. Если он ва не подходит, это значит что скорее всего вы ваш косяк.
Размер канваса не в размерах экрана а измеряется согласно CanvasScaler.
RectTransform rect = transform as RectTransform;
RectTransform parentRect = rect.parent as RectTransform;
rect.deltaSize = parentRect.deltaSize;
С помощью RectTransform канваса я нахожу ширину канваса:
rt.rect.size.x //rt - RectTransform канваса
далее, у меня всё ровно не сходилось, и картинка выходила за рамки, как в этом видео: disk.yandex.ru/i/5YaCQY07za_61Q
Это удалось пофиксить тем, что я поделил rt.rect.size.x на ширину картинка, при которой она выглядит адекватно, далее составил такой код:
this.gameObject.GetComponent<RectTransform>().sizeDelta = new Vector2(rt.rect.size.x/1.28f, this.gameObject.GetComponent<RectTransform>().sizeDelta.y); //1.28f - результат деления
хоть где-то пригодились знания математики (хотя такое я вспомнил с курсов физики)