Изменение размера спрайт скриптом

126
28 февраля 2021, 10:30

Есть игровой объект , который по дефолту имеет свой нормальный размер спрайта , но после его замены он приобретает другой размер.
Код которым я заменяю спрайта:

GetComponent<SpriteRenderer>().sprite = Sprite2;

Как я могу это исправить?
Могу ли я как-то подогнать спрайт которым я заменю под размер предыдущего.

Answer 1

Просто поясню. Существует два различных способа нарисовать спрайт - SpriteRenderer и Image(для UI). Опишу вам очень грубо, как они работают:

SpriteRenderer - берёт ваш спрайт, смотрит на его разрешение, затем делит его на Pixels Per Unit, которые указаны в спрайте (выделите спрайт в проекте и увидите этот параметр). Получив кол-во юнитов по вертикали и горизонтали, которое должен занимать спрайт - рисует его этого размера.

Image - все элементы UI используют компонент RectTransform, вместо обычного Transform. Отличие в том, что RectTransform помимо позиции, скейла и поворота имеет ещё и размер. Поэтому Image вместо того, чтобы считать сколько юнитов должен занимать Sprite просто рисует его в том размере, который указан в RectTransform объекта на котором висит Image.

Грубо говоря - первый сам считает исходя из Sprite-а какого размера он должен быть, а второй просто фигачит в уже имеющийся свой размер.

Если вы хотите изменить размер первого, как вам уже подсказали, меняйте параметр Pixels Per Unit, если второго - меняйте размер объекта через RectTransform.

READ ALSO
Получить объект по его string&#39;овому названию

Получить объект по его string'овому названию

У меня есть файл Resourcerexs, а также string'овое название файла

99
Win api C# Клик с удерживанием

Win api C# Клик с удерживанием

Всем привет, нужно на "Чужом" приложении кликнуть на менюВсе хорошо, но меню всплывающие и после увода курсора пропадает, а на C# после клика...

85
Связь модели сериала со списком жанров

Связь модели сериала со списком жанров

У меня есть модель сериала, которая в свою очередь должна содержать в себе коллекцию моделей жанров

103