Есть игровой объект , который по дефолту имеет свой нормальный размер спрайта , но после его замены он приобретает другой размер.
Код которым я заменяю спрайта:
GetComponent<SpriteRenderer>().sprite = Sprite2;
Как я могу это исправить?
Могу ли я как-то подогнать спрайт которым я заменю под размер предыдущего.
Просто поясню. Существует два различных способа нарисовать спрайт - SpriteRenderer
и Image
(для UI). Опишу вам очень грубо, как они работают:
SpriteRenderer
- берёт ваш спрайт, смотрит на его разрешение, затем делит его на Pixels Per Unit
, которые указаны в спрайте (выделите спрайт в проекте и увидите этот параметр). Получив кол-во юнитов по вертикали и горизонтали, которое должен занимать спрайт - рисует его этого размера.
Image
- все элементы UI используют компонент RectTransform
, вместо обычного Transform. Отличие в том, что RectTransform
помимо позиции, скейла и поворота имеет ещё и размер. Поэтому Image вместо того, чтобы считать сколько юнитов должен занимать Sprite просто рисует его в том размере, который указан в RectTransform объекта на котором висит Image.
Грубо говоря - первый сам считает исходя из Sprite-а какого размера он должен быть, а второй просто фигачит в уже имеющийся свой размер.
Если вы хотите изменить размер первого, как вам уже подсказали, меняйте параметр Pixels Per Unit
, если второго - меняйте размер объекта через RectTransform
.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
У меня есть файл Resourcerexs, а также string'овое название файла
Всем привет, нужно на "Чужом" приложении кликнуть на менюВсе хорошо, но меню всплывающие и после увода курсора пропадает, а на C# после клика...
У меня есть модель сериала, которая в свою очередь должна содержать в себе коллекцию моделей жанров