Содержание статьи

При работе с 2D-графикой в Unity большинство художников и разработчиков используют спрайт-листы, где несколько изображений объединены в один файл. Такой подход снижает количество draw call и упрощает управление ассетами, но требует корректной нарезки. Ошибки на этом этапе приводят к смещённым анимациям, некорректным коллайдерам и проблемам с масштабированием.
Unity предоставляет встроенный Sprite Editor, который позволяет разбивать текстуру на отдельные спрайты разными способами: автоматически, по сетке или вручную. Каждый метод подходит для определённых задач – например, анимаций персонажей, тайлсетов или UI-элементов. Неправильный выбор режима нарезки может усложнить дальнейшую работу с анимацией и тайлмапами.
В этом руководстве рассматривается полный процесс нарезки спрайтов в Unity 2D: от настройки параметров импорта текстуры до проверки результата в сцене. Особое внимание уделяется параметрам Pixels Per Unit, Pivot и именованию спрайтов, так как именно они напрямую влияют на точность позиционирования, масштаб объектов и удобство работы в Animator и Tile Palette.
Материал ориентирован на практическое применение и подходит как для работы с классическими спрайт-листами персонажей, так и для подготовки графики под тайлсеты и интерфейс. Все шаги описываются с учётом актуального рабочего процесса Unity 2D.
Нарезка спрайтов в Unity 2D: пошаговое руководство

Процесс нарезки начинается с выбора текстуры в окне Project. В Inspector необходимо установить Texture Type в значение Sprite (2D and UI), а параметр Sprite Mode переключить на Multiple. Без этого Unity не позволит разделить изображение на отдельные элементы.
Перед открытием Sprite Editor важно задать корректный Pixels Per Unit. Для персонажей чаще всего используется значение 16, 32 или 64, в зависимости от исходного разрешения графики. Неверное значение приводит к несоответствию размеров объектов на сцене и проблемам при работе с физикой и камерой.
После нажатия кнопки Sprite Editor выполняется нарезка через меню Slice. Для анимационных спрайт-листов с одинаковыми кадрами подходит режим Grid By Cell Size, где вручную задаётся ширина и высота одного кадра в пикселях. Для тайлсетов чаще используется Grid By Cell Count, если заранее известно количество элементов по осям.
После автоматической нарезки требуется проверить расположение границ. При необходимости отдельные прямоугольники корректируются вручную, чтобы исключить захват пустых пикселей или обрезку деталей. Pivot каждого спрайта задаётся до применения изменений, так как он влияет на точку вращения и позиционирование в сцене.
Завершающий шаг – нажатие кнопки Apply и проверка результата. Развернув текстуру в Project, можно убедиться, что каждый спрайт имеет корректное имя, размеры и точку опоры. Это упрощает дальнейшую работу с Animator, Tile Palette и сортировкой слоёв.
| Шаг | Параметр | Рекомендация |
|---|---|---|
| Импорт текстуры | Sprite Mode | Установить Multiple |
| Настройка масштаба | Pixels Per Unit | 16, 32 или 64 в зависимости от ассета |
| Нарезка | Slice Method | Grid для равных элементов, Automatic для сложных листов |
| Финализация | Pivot | Center или Custom под задачу |
Настройка Import Settings для текстуры со спрайтами

После добавления изображения в проект Unity необходимо сразу проверить параметры импорта в Inspector. Поле Texture Type должно быть установлено в Sprite (2D and UI), так как другие режимы блокируют работу со Sprite Editor и приводят к неверной интерпретации прозрачности.
Параметр Sprite Mode выбирается исходя из структуры изображения. Для спрайт-листов используется значение Multiple, позволяющее хранить несколько спрайтов в одном файле. Если оставить Single, Unity будет воспринимать текстуру как один объект, независимо от её содержимого.
Значение Pixels Per Unit определяет соотношение пикселей изображения к единицам в мире сцены. Например, при значении 32 спрайт шириной 32 пикселя будет иметь размер 1 юнит. Это напрямую влияет на масштаб персонажей, тайлов и работу камеры, поэтому параметр должен совпадать с остальной графикой проекта.
Для сохранения чёткости пиксельной графики параметр Filter Mode рекомендуется установить в Point (no filter), а Compression – в None. В проектах с высокой плотностью пикселей допустимо использовать Bilinear, если требуется сглаживание, но это влияет на визуальное восприятие тайлов и анимаций.
Параметр Generate Mip Maps для 2D-спрайтов обычно отключается, так как он увеличивает размер билда и может вызывать артефакты при масштабировании. После изменения всех настроек необходимо нажать Apply, иначе Unity не пересчитает текстуру и дальнейшая нарезка будет выполнена с устаревшими параметрами.
Выбор Sprite Mode: Multiple для спрайт-листа
Параметр Sprite Mode определяет, как Unity будет интерпретировать загруженную текстуру. При работе со спрайт-листами необходимо выбирать значение Multiple, так как оно разрешает разделение одного изображения на несколько независимых спрайтов внутри одного ассета.
Режим Single подходит только для одиночных изображений и блокирует доступ к инструментам нарезки. Если оставить его активным, Sprite Editor откроется в режиме просмотра без возможности создавать отдельные области, даже если текстура содержит десятки кадров анимации или тайлов.
После переключения на Multiple Unity сохраняет текстуру как контейнер для набора спрайтов. Каждый вырезанный элемент будет отображаться в Project как дочерний объект, что упрощает перетаскивание кадров в Animator, настройку тайлов и работу с UI без дублирования файлов.
Использование Multiple снижает количество текстурных ассетов в проекте, так как все связанные элементы хранятся в одном файле. Это упрощает обновление графики: при замене исходного изображения повторная нарезка применяется ко всем связанным спрайтам без изменения ссылок в сценах и префабах.
Перед переходом к Sprite Editor важно убедиться, что Sprite Mode установлен корректно, так как смена режима после нарезки может привести к сбросу созданных областей и потере настроек Pivot и имён спрайтов.
Настройка Pixels Per Unit и фильтрации текстуры
Параметр Pixels Per Unit задаёт соответствие между пикселями текстуры и юнитами в сцене. Например, при значении 32 спрайт размером 64×64 пикселя будет занимать 2×2 юнита. Все спрайты в проекте должны использовать одинаковое значение, иначе объекты с разной графикой будут иметь несоразмерные размеры.
Для пиксельной графики чаще всего применяются значения 16, 32 или 64, кратные размеру тайлов и кадров анимации. При работе с персонажами и окружением важно учитывать размер камеры: ортографическая камера с Size 5 при Pixels Per Unit 32 отображает по вертикали 320 пикселей, что помогает заранее рассчитать масштаб уровней.
Параметр Filter Mode влияет на отображение пикселей при масштабировании. Значение Point (no filter) сохраняет чёткие границы и подходит для тайлсетов и анимаций без сглаживания. Режим Bilinear допускает интерполяцию между пикселями и применяется для интерфейсных элементов или иллюстративной графики.
Дополнительно следует проверить Compression, так как сжатие может искажать края спрайтов и вызывать появление артефактов между тайлами. Для точной работы с пикселями рекомендуется использовать None, особенно если спрайты участвуют в тайлмапах или анимациях с плотным прилеганием кадров.
После изменения параметров масштабирования и фильтрации необходимо нажать Apply, чтобы Unity пересчитала текстуру. Только после этого можно переходить к нарезке, иначе размеры и визуальное качество спрайтов не будут соответствовать ожидаемому результату.
Открытие Sprite Editor и подготовка к нарезке
После корректной настройки параметров импорта текстуры доступ к инструментам нарезки осуществляется через кнопку Sprite Editor в Inspector. При первом открытии Unity может запросить установку пакета 2D Sprite, без которого редактор не будет работать.
В окне Sprite Editor отображается исходная текстура с сеткой координат. Перед созданием областей рекомендуется увеличить масштаб и проверить, что между кадрами отсутствуют лишние прозрачные отступы. Наличие пустых пикселей по краям приводит к неточным границам и визуальным зазорам при анимации.
Панель параметров справа позволяет заранее выбрать режим Pivot по умолчанию. Для анимаций персонажей обычно используется Center, тогда как для тайлов удобнее Custom с привязкой к нижнему левому углу. Установка значения до нарезки сокращает объём ручной корректировки.
Также стоит обратить внимание на порядок слоёв и ориентацию изображения. Если спрайт-лист был экспортирован с поворотом или отражением, это лучше исправить на этапе подготовки, так как Sprite Editor не предназначен для правки графики.
Перед запуском Slice важно убедиться, что все параметры импорта применены, а текстура не находится в режиме только чтения. Это гарантирует корректное сохранение созданных областей и предотвращает потерю изменений при закрытии редактора.
Выбор метода Slice: Automatic, Grid By Cell Size или Grid By Cell Count

Метод Slice определяет, каким образом Sprite Editor разобьёт текстуру на отдельные области. Выбор режима зависит от структуры спрайт-листа и точности, необходимой для дальнейшей работы с анимациями или тайлами.
-
Automatic подходит для спрайт-листов с неравномерными элементами и прозрачными отступами. Unity анализирует альфа-канал и создаёт границы по видимым пикселям. Этот режим удобен для UI-иконок и разрозненных изображений, но требует ручной проверки каждого результата.
-
Grid By Cell Size используется, когда все кадры имеют одинаковый размер в пикселях. В настройках указывается точная ширина и высота одной ячейки, например 64×64. Такой подход применяется для анимаций персонажей и объектов, где каждый кадр выровнен по сетке.
-
Grid By Cell Count выбирается в случаях, когда известно количество элементов по горизонтали и вертикали, но не их точный размер. Unity автоматически делит текстуру на равные части, что удобно для тайлсетов и таблиц символов.
Независимо от выбранного метода, перед применением нарезки следует проверить значения Offset и Padding. Ненулевые параметры могут смещать границы и приводить к захвату лишних пикселей или появлению зазоров между тайлами.
-
Определить структуру спрайт-листа и равномерность элементов.
-
Выбрать подходящий метод Slice в меню редактора.
-
Проверить предварительный результат и при необходимости скорректировать параметры.
Правильный выбор метода нарезки снижает объём ручной доработки и упрощает дальнейшую настройку анимаций и тайлмапов.
Корректировка Pivot и имен спрайтов перед применением
Перед нажатием кнопки Apply в Sprite Editor необходимо проверить параметры Pivot для каждого созданного спрайта. Pivot определяет точку привязки объекта в сцене и напрямую влияет на позиционирование, вращение и работу анимаций.
-
Для персонажей и объектов с симметрией чаще используется значение Center, чтобы кадры не смещались при смене анимации.
-
Для тайлов и элементов окружения удобнее Custom с координатами (0, 0), что соответствует нижнему левому углу и упрощает выравнивание в Tilemap.
-
Для оружия и предметов с точкой крепления Pivot устанавливается вручную в месте предполагаемого соединения с персонажем.
Корректировку Pivot лучше выполнять до применения нарезки, так как изменение этого параметра после использования спрайтов в сцене может привести к смещению объектов и нарушению анимаций.
Имена спрайтов задаются в правой панели Sprite Editor и используются Unity при отображении ассетов в Project и Animator. Автоматически сгенерированные названия часто не отражают порядок кадров и затрудняют навигацию.
-
Использовать нумерацию кадров с ведущими нулями: run_01, run_02, run_03.
-
Группировать спрайты по действию или состоянию: idle, walk, jump.
-
Избегать пробелов и специальных символов в названиях.
Грамотно настроенные Pivot и последовательные имена сокращают время настройки Animator, упрощают поиск нужных кадров и предотвращают ошибки при повторном использовании ассетов.
Применение нарезки и проверка спрайтов в сцене
После завершения всех настроек в Sprite Editor применяется нарезка нажатием кнопки Apply. Unity пересобирает ассет и создаёт набор отдельных спрайтов, доступных через разворачивание текстуры в окне Project. Если изменения не были сохранены, редактор сбрасывает все созданные области при закрытии окна.
На этом этапе важно проверить каждый спрайт на корректность размеров и границ. Выделяя отдельные элементы в Project, следует убедиться, что края не захватывают прозрачные пиксели соседних кадров. Такие ошибки особенно заметны при анимации и использовании тайлмапов.
Для визуальной проверки спрайты перетаскиваются непосредственно на сцену. Необходимо сравнить их масштаб с другими объектами и убедиться, что значение Pixels Per Unit соответствует остальной графике проекта. Несоответствие приводит к различиям в размерах и проблемам с выравниванием.
Дополнительно проверяется положение Pivot. При вращении или перемещении объекта в сцене он должен вести себя предсказуемо и не смещаться относительно сетки или других элементов. Если обнаружены отклонения, требуется вернуться в Sprite Editor и скорректировать настройки.
Завершающим шагом является тестирование спрайтов в целевом контексте: добавление кадров в Animator, создание Tile Palette или размещение в UI. Это позволяет выявить неточности до начала полноценной сборки сцен и избежать правок на поздних этапах разработки.
Вопрос-ответ:
Почему после нарезки спрайты выглядят разного размера в сцене?
Чаще всего причина связана с разными значениями Pixels Per Unit у текстур. Если часть спрайтов была импортирована с PPU 16, а другая с 32 или 64, Unity масштабирует их по-разному. Также стоит проверить, не отличается ли реальный размер кадров в пикселях внутри спрайт-листа и нет ли лишних прозрачных отступов по краям.
Когда лучше использовать Automatic Slice, а когда сеточные методы?
Automatic подходит для изображений с произвольным расположением элементов и прозрачными промежутками, например для иконок интерфейса. Для анимаций персонажей и тайлсетов с одинаковыми кадрами предпочтительнее Grid By Cell Size или Grid By Cell Count, так как они дают предсказуемые границы и одинаковые размеры спрайтов.
Можно ли менять Pivot после того, как спрайты уже используются в Animator?
Можно, но это приводит к смещению объектов в сцене и к изменению поведения анимаций. При смене Pivot точка привязки кадров меняется, из-за чего персонаж может «прыгать» при переключении состояний. Обычно Pivot настраивается до создания анимаций, чтобы избежать дополнительной правки.
Почему между тайлами появляются тонкие линии при использовании Tilemap?
Такие линии возникают из-за фильтрации и сжатия текстуры. Нужно установить Filter Mode в Point (no filter), отключить компрессию и убедиться, что Padding в Sprite Editor равен нулю. Также помогает кратное значение Pixels Per Unit относительно размера тайлов.
Зачем переименовывать спрайты, если Unity уже создала имена автоматически?
Автоматические названия часто не отражают порядок кадров и усложняют работу в Animator и Project. Осмысленные имена с нумерацией упрощают сортировку, ускоряют поиск нужных кадров и снижают вероятность ошибок при создании анимаций и повторном использовании ассетов.
Почему после нарезки автоматическим методом некоторые спрайты объединяются или обрезаются неправильно?
Automatic Slice ориентируется на альфа-канал и видимые пиксели. Если между элементами есть полупрозрачные области, тени или пиксели с низкой альфой, Unity может воспринять их как часть одного объекта. Также проблемы возникают, когда кадры расположены вплотную друг к другу без прозрачных промежутков. В таких случаях лучше использовать Grid By Cell Size с точным размером кадра или вручную подправить границы перед применением нарезки.
