Как нарезать спрайты в unity
Перейти к содержимому

Как нарезать спрайты в unity

  • автор:

Sprite Editor

Иногда текстура спрайта содержит только один элемент графики, но часто гораздо удобней объединить несколько изображений связанных друг с другом в одно изображение. Например, изображение может содержать составные части персонажа, как для машины колеса которой двигаются независимо от корпуса. Для этих целей Unity предоставляет Sprite Editor позволяя с легкостью извлекать элементы составного изображения.

NOTE:

Make sure the graphic you want to edit has its Texture Type set to Sprite (2D and UI). For information on importing and setting up sprites, see Sprites.

Sprite textures with multiple elements need the Sprite Mode to be set to Multiple in the Inpsector. (See Fig 2: Texture Import Inspector… below.)

Открытие редактора спрайтов

Открытие редактора спрайтов

  1. Select the 2D image you want to edit from the Project View(Fig 1: Project View). Note that you can’t edit a sprite which is in the Scene View.
  2. Click on the Sprite Editor button in the Texture Import Inspector(Fig 2: Texture Import Inspector) and the Sprite Editor displays (Fig 3: Sprite Editor).

Note: You can only see the Sprite Editor button if the Texture Type on the image you have selected is set to Sprite (2D and UI).

Fig 1: Project View Fig 2: Texture Import Inspector with Sprite Editor button

Note: Set the Sprite Mode to Multiple in the Texture Import Inspector if your image has several elements.

Fig 3: Sprite Editor

Помимо составного изображения, вы увидите различные элементы управления в заголовке окна редактора. Слайдер в правом верхнем углу управляет приближением, в то время как кнопка с цветными полосками слева от него переключает режим отображения альфа-канала и обычный вид изображения. Самый важный элемент управления это меню Slice в левом верхнем углу, который предоставляет опции для автоматической нарезки элементов изображения. Кнопки Apply и Revert позволяют вам сохранить или отменить сделанные изменения.

Использование редактора

The most direct way to use the editor is to identify the elements manually. If you click on the image, you will see a rectangular selection area appear with handles in the corners. You can drag the handles or the edges of the rectangle to resize it around a specific element. Having isolated an element, you can add another by dragging a new rectangle in a separate part of the image. You’ll notice that when you have a rectangle selected, a panel appears in the bottom right of the window:

The controls in the panel let you choose a name for the sprite graphic and set the position and size of the rectangle by its coordinates. A border width, for left, top, right and bottom can be specified in pixels. There are also settings for the sprite’s pivot, which Unity uses as the coordinate origin and main “anchor point” of the graphic. You can choose from a number of default rectangle-relative positions (eg, Center, Top Right, etc) or use custom coordinates.

The Trim button next to the Slice menu item will resize the rectangle so that it fits tightly around the edge of the graphic based on transparency.

Note: Borders are only supported for the UI system, not for the 2D SpriteRenderer.

Автоматическая нарезка (slicing)

Isolating the sprite rectangles manually works well but in many cases, Unity can save you work by detecting the graphic elements and extracting them for you automatically. If you click on the Slice menu in the control bar, you will see this panel:

With the slicing type set to Automatic, the editor will attempt to guess the boundaries of sprite elements by transparency. You can set a default pivot for each identified sprite. The Method menu lets you choose how to deal with existing selections in the window. The Delete existing option will simply replace whatever is already selected, Smart will attempt to create new rectangles while retaining or adjusting existing ones, and Safe will add new rectangles without changing anything already in place.

Grid by Cell Size or Grid by Cell Count options are also available for the slicing type. This is very useful when the sprites have already been laid out in a regular pattern during creation:

The Pixel Size values determine the height and width of the tiles in pixels. If you chose grid by cell count, Column & Row determines the number of columns and rows used for slicing. You can also use the Offset values to shift the grid position from the top-left of the image and the Padding values to inset the sprite rectangles slightly from the grid. The Pivot can be set with one of nine preset locations or a Custom Pivot location can be set.

Note that after any of the automatic slicing methods has been used, the generated rectangles can still be edited manually. You can let Unity handle the rough definition of the sprite boundaries and pivots and then do any necessary fine tuning yourself.

Polygon Resizing

Open the Sprite Editor for a polygon and you have the option to change its shape, size, and pivot position.

Shape

Sprite Editor: Polygon resizing - shape

Enter the number of sides you want the polygon to have in the Sides field and click Change.

Size and Pivot

Sprite Editor: Polygon resizing - size and pivot point - click on the polygon to display these options

SIZE: To change the polygon’s size, click on the sprite to display green border lines and the Sprite information box. Click and drag on the green lines to create the border you want, and the values in the Border fields change. (Note that you cannot edit the Border fields directly.)

PIVOT: To change the polygon’s pivot point (that is the axis point the polygon moves around), click on the image to display the Sprite information box. Click on the Pivot drop down menu and select an option. This displays a blue pivot circle on the polygon; its location depends on the pivot option to you have selected. If you want to change it further, select Custom Pivot and click and drag on the blue pivot circle to position it. (Note that you cannot edit the Pivot fields directly.)

Как правильно разрезать изображения на спрайты в Unity

Приветствую начинающих разработчиков! Для разработки 2д игр используют изображения, называемые спрайтами. И как правило, для лучшей оптимизации игры, данные спрайты обычно размещают на одном большом изображении, которые в дальнейшем с помощью редактора Unity вырезаются из этого большого изображения, на множество мелких спрайтов.

В данной статье мы научимся правильно разрезать изображение на спрайты, а так же предварительно настраивать данное изображение перед нарезкой.

Обычные спрайты

Для начала в окне Project выберите то изображение, которое хотите разрезать на спрайты. Я скачал с интернета вот такой набор UI интерфейса. Вот его мы и будет разрезать на мелкие спрайты под каждый UI элемент.

Для начала кликнем на наше изображение в окне Project, и далее в окне Inspector настраиваем наше изображение следующим образом(1):

  • В поле Sprite Mode указываем значение Multiple, которое говорит о том, что данная картинка содержит не один, а множество спрайтов.
  • В поле Pixel Per Unit можете оставить значение 100. Чем меньше это значение, тем больше по размерам будут Ваши спрайты — и наоборот.
  • Если у вас пиксельная графика, то в поле Filter Mode указываем значение Point (no filter), чтобы разрезанные спрайты не создавали эффект размытости.
  • В поле Compression желательно поставить None.
  • Далее Жмём кнопку Apply(2), чтобы сохранить все настройки.

Отлично, настройка произведена, и теперь нажав на кнопку Sprite Editor(3), мы откроем новое окно Sprite Editor, в котором и будет происходить разрезание спрайтов.

Особенность данных спрайтов в том, что все они имеют разные размеры, и расположены на изображении хаотично, поэтому разрезание таких спрайтов происходит легче всего. В новом открывшем окне Sprite Editor необходимо проделать всего 4 простых действия:

  • (1) Жмём кнопку Slice.
  • (2) В поле Type выбираем Automatic, чтобы юнити автоматически разрезал наше изображение на множество спрайтов.
  • (3) Далее жмём кнопку Slice, и после чего все ваши спрайты будут обёрнуты в белый контур, который обозначает границы каждого спрайта. Контуры каждого спрайта можно в ручном режиме отредактировать, если что-то где-то выделено не правильно.
  • (4 ) Далее жмём кнопку Apply, и закрываем данное окно.

В итоге в окне Project внутри изображения с UI элементами можно наблюдать множество нарезанных спрайтов.

Всё готово, и теперь можно работать с каждым отдельным спрайтом.

Спрайты для анимаций

Перейдём теперь к более сложному разрезанию, ведь бывают случаи, когда нам необходимо разрезать спрайты для анимаций какого-либо объекта, например персонажа.

Если же в предыдущем случае все спрайты имели разные размеры, и предназначались для разных объектов, то в данном случае все спрайты должны иметь одинаковые размеры, и предназначаться к одному объекту. Поэтому автоматическая нарезка здесь точно не подойдёт.

Для таких видов изображений, в окне Sprite Editor в поле Type необходимо выбрать Grid By Cell Size, чтобы разрезание происходило по сетке с теми размерами ячеек, которые мы укажем. В поле Pixel Size указываем размеры ячеек данной сетки в пикселях. Указывайте то значение, какого размера является каждый ваш спрайт. У меня это 296×296.

После нажатия на кнопку Slice, мы можем увидеть сетку из шести ячеек, обведённые тонким красным контуром, чтобы мы могли видеть, правильно ли будет происходить нарезка спрайтов. Обратите внимание, что шестая ячейка пустая, поэтому здесь нарезаться ничего не будет.

Готово, спрайты в количестве пяти штук нарезаны, и теперь их можно спокойно использовать для своей анимации.

Спрайты для тайлмапа

Последнее что хотелось бы затронуть, это разрезание изображения на спрайты для тайлмапа. Разрезка спрайтов в 90% случаях происходит по сетке, то-есть так же, как и в предыдущем примере. Размеры спрайтов здесь могут быть разными, НО, все итоговые нарезанные тайлы — одинаковыми, так как спрайт может состоять из нескольких одинаковых по размеру тайлов.

Но здесь есть одна важная особенность. Перед разрезанием изображения, необходимо в окне Inspector в поле Pixels Per Unit указать размер ваших тайлов. Например, если все Ваши тайлы имеют размеры 64×64 пикселей, то в это поле необходимо вписать 64.

Ну а далее можно спокойно переходить к разрезанию спрайтов на тайлы по сетке, нажав кнопку Sprite Editor.

На этом всё. Из выше сказанного можно все наши спрайты условно разделить на 3 вида:

  • Обычные спрайты, где все спрайты расположены хаотично, и все они имеют разные размеры. Данные спрацты ВСЕГДА разрезаются в автоматическом режиме.
  • Спрайты для анимации. В 90% случаях спрайты должны иметь одинаковый размер, и разрезаются по сетке.
  • Спрайты для тайлмапа. Спрайты могут быть разных размеров, но все разрезанные в итоге тайлы — одинаковыми! Разрезаются тайлы в 99% случаев по сетке.

Конечно же, данная классификация условная, как и все те настройки, которые мы производили в данной статье. Безусловно, настраивать спрайты и разрезать их не обязательно так, как описаны в данной статье. Я лишь рассказал о частоиспользуемых и удобных методах нарезок и настроек.

Если данная статья была полезной, буду рад лайкам. А так же оставляйте свои вопросы в комментариях.

Работа со спрайтами в Unity Sprite Editor

Работа со спрайтами в Unity

Бывают такие ситуации когда текстура спрайта содержит не только один элемент, гораздо удобней объединить несколько изображений связанных друг с другом в одно изображение. Например, изображение может содержать составные части персонажа, бег, прыжок , стрельба , состояние покоя. Для этих целей Unity предоставляет Sprite Editor, который позволяет с извлекать элементы составного изображения.

Убедитесь, что графический объект, который вы хотите отредактировать, имеет тип текстуры, заданный для Sprite (2D и UI).

Для текстур Sprite с несколькими элементами необходимо, чтобы режим Sprite был установлен на Multiple in Inector.

Откройте редактор спрайтов

1. Выберите 2D-изображение, которое вы хотите отредактировать, из Project View

Работа со спрайтами в Unity

Вы не можете редактировать спрайт, который находится в режиме просмотра из сцены.

2. Нажмите кнопку «Редактор спрайтов» в Инспекторе импорта и отобразится редактор спрайтов.

Работа со спрайтами в Unity

Установите режим Sprite в Multiple в Inspector Import Text, если ваше изображение имеет несколько элементов.

Работа со спрайтами в Unity

Вы можете видеть только кнопку «Редактор спрайтов», если для параметра «Тип текстуры» для выбранного изображения установлено значение «Спрайт».

Кроме составного изображения, вы увидите другие элементы управления в редакторе. Слайдер в правом верхнем углу управляет приближением, в то время как кнопка с цветными полосками слева от него изменяет отображение альфа-канала и обычного вида изображения. Самый важный элемент управления это меню Slice в левом верхнем углу, который предоставляет опции для автоматической нарезки элементов изображения. Кнопки Apply and Revert позволяют вам сохранить или отменить сделанные изменения.

Использование редактора

Самый простой способ использования редактора — идентифицировать элементы вручную. Если вы нажмете на изображение, вы увидите прямоугольную область выделения с ручками в углах. Вы можете перетащить ручки или края прямоугольника, чтобы изменить его вокруг определенного элемента. Выделив элемент, вы можете добавить другой, перетащив новый прямоугольник в отдельную часть изображения. Вы заметите, что когда вы выбрали прямоугольник, в правом нижнем углу окна появится панель:

Работа со спрайтами в Unity

Элементы управления на панели позволяют выбрать имя для спрайта и задать положение и размер прямоугольника по его координатам. Ширина границы, для левой, верхней, правой и нижней, может быть указана в пикселях. Существуют также настройки для оси спрайта, которые Unity использует как начало координат и основную «опорную точку» графического объекта. Вы можете выбрать из нескольких позиций по умолчанию для прямоугольника.

Кнопка Trim рядом с пунктом меню Slice изменит размер прямоугольника так, чтобы он плотно касался края изображения на основе прозрачности. Границы поддерживаются только для системы пользовательского интерфейса, а не для 2D SpriteRenderer.

Автоматическая нарезка

Изоляция прямоугольников спрайтов работает хорошо, но во многих случаях Unity может сэкономить вам работу, обнаружив спрайты и извлекая их автоматически. Если вы нажмете на меню Slice на панели управления, вы увидите эту панель:

Работа со спрайтами в Unity

Если тип разреза установлен на «Автоматически», редактор попытается угадать границы элементов спрайтов по прозрачности. Вы можете установить пивот по умолчанию для каждого идентифицированного спрайта. В меню «Метод» вы можете выбрать, как работать с существующими выборами в окне. Опция «Удалить существующий» просто заменит все, что уже выбрано, Smart попытается создать новые прямоугольники, сохранив или отредактировав существующие, и Safe добавит новые прямоугольники, не изменив ничего уже на месте.

Параметры сетки по размеру ячейки или сетке по ячейкам также доступны для типа разреза. Это очень полезно, когда спрайты уже были выложены в обычном шаблоне во время создания:

Работа со спрайтами в Unity

Значения размера пикселя определяют высоту и ширину плиток в пикселях. Если вы выбрали сетку по количеству ячеек, Column & Row определяет количество столбцов и строк, используемых для нарезки. Вы также можете использовать значения смещения, чтобы сдвинуть положение сетки в левом верхнем углу изображения и значения заполнения, чтобы немного вставить прямоугольники спрайтов из сетки. Pivot может быть настроен с одним из девяти предустановленных мест или может быть установлено местоположение пользовательского поворота.

Обратите внимание, что после использования любого из методов автоматического разреза создаваемые прямоугольники все еще можно редактировать вручную. Вы можете позволить Unity обрабатывать грубое определение границ спрайта и шарниров, а затем выполнять любую необходимую точную настройку самостоятельно.

Работа со спрайтами (Unity3d). Часть II

В первой части статьи мы рассмотрели импорт спрайтов в Unity3d и некоторые особенности импорта.
В этой же статье я хочу поговорить о Листах Спрайтов (SpriteSheets).

SpriteSheets как они есть

SpriteSheets значительно облегчают работу со спрайтами и анимацией. Эта функция позволяет разбивать спрайты в одном файле на отдельные кадры анимации. Слишком заумно и много букв. Внизу иллюстрация.

В этом примере благодаря SpriteSheets в одном файле хранятся спрайты для анимации бега, полета, ожидания и т.д. Так что это действительно облегчает работу.
Давайте теперь перетащим такой спрайт на сцену и посмотрим, что произойдет.

После добавления его на сцену, он стал одним большим спрайтом, а это неправильно и это нам не подходит.
Для того чтобы сказать Unity, что в файле у нас не один файл, а несколько необходимо обратиться к полю Sprite Mode в Inspector’e, изменив там значение с Single на Multiple, тем самым сказав Unity, что это не один спрайт, а некоторое количество. Иллюстрация.

Сделав это, мы увидим, что появилась новая кнопка Sprite Editor, которой мы и воспользуемся. Нажав на неё перед вами откроется окно позволяющее «нарезать спрайты». Здесь необходимо открыть контекстное меню с помощью кнопки Slice, в котором вам будут доступны все настройки «нарезки спрайтов». Для облегчения мыслительного процесса иллюстрация.

Рассмотрим подробнее возможности этого меню.
Первое, что мы здесь видим, это тип «нарезки» спрайтов. Если мы так и оставим значение Automatic и нажмем Slice, то Unity обрежет все спрайты, просто взяв минимально возможное количество пикселей. Это нас не всегда устраивает, поскольку, если применить такой метод в нашем конкретном случае, то размеры всех спрайтов будут разными, а это приведет к неприемлемой «дерганой» анимации. Здесь пример неудачной автоматической «нарезки».

Хотя если спрайты одинаковы по размеру, что также бывает часто, то эта функция сэкономит время.
Теперь рассмотрим ручную «нарезку» спрайтов.
Во всё том же меню изменяем значение Automatic на Grid, после чего указываем высоту/ширину в пикселях и также нажимаем Slice.
Если при «нарезке» спрайтов вручную, у вас образуются пустые спрайты (они образуются!), не обращайте на них внимания. Они никоим образом не повлияют на ваш проект.

Повторюсь, что автоматическая нарезка спрайтов является полезной функцией, в действительности экономящей много времени и нервов. Поэтому, старайтесь по возможности использовать автоматическую «нарезку». Еще раз повторюсь как определить какой вид функции использовать. Если спрайты одинаковы или отличаются несущественно, то используйте функцию Automatic, иначе Grid.
Как выглядит та же анимация полета нарезанная вручную:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *