Как сделать спрайт для unity

Обновлено: 07.07.2024

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

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

Пользователям необходимо указывать “тег упаковки” (Packing Tag) в импортере текстур (Texture Importer), чтобы включить упаковку спрайтов для данной текстуры.

Использование упаковщика спрайтов

По-умолчанию упаковщик спрайтов отключён, но его работу можно настроить через настройки редактора (меню: Edit -> Project Settings -> Editor ). Метод упаковывания спрайтов можно установить из состояния Disabled в состояние Enabled for Builds (где упаковывание будет работать для сборок, но не в режиме Play) или в состояние Always Enabled (где упаковывание будет работать и во время сборки и в режиме Play).

Если вы откроете окно Sprite Packer (menu: Window -> Sprite Packer ) и нажмёте в левом верхнем углу на кнопку Pack , вы увидите расположение текстур упакованных на этом атласе.


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

Политика упаковки

Упаковщик спрайтов использует packing policy , чтобы определять, как применять спрайты к атласам. Можно создавать и свои собственные правила упаковки (см. ниже), но опции Default Packer Policy и Tight Packer Policy будут всегда доступны. С этими правилами свойство Packing Tag в Texture Importer позволяет напрямую выделять атлас, для которого будет произведено упаковывание спрайтов по тегу. Т.е. все спрайты с таким же тегом упаковки будут упакованы в один и тот же атлас. Затем атласы дополнительно сортируются по признаку настройки импортирования текстур, чтобы даже в этом случае они совпадали несмотря на то, как прежде определил пользователь исходные текстуры. Если возможно, спрайты со схожей степенью сжатия текстур могут будут сгруппированы в одном и том же атласе.

  • DefaultPackerPolicy по-умолчанию будет использовать прямоугольный метод упаковывания до тех пор, пока не будет назначен “[TIGHT]” метод в Packing Tag (т.е. назначение методу упаковывания тега [TIGHT] приведёт к использованию плотного метода упаковывания).
  • TightPackerPolicy по-умолчанию будет использовать плотное упаковывание, если спрайт имеет плотную сетку. Если в Packing Tag будет назначен тег “[RECT]”, то будет выполнен прямоугольный метод упаковки (т.е. присвоение вашему упаковыванию тега “[RECT]UI_Elements” приведёт к прямоугольному методу упаковывания).
  • TightPackerPolicy по-умолчанию будет использовать плотное упаковывание, если спрайт имеет плотную сетку. Если в Packing Tag будет назначен тег “[RECT]”, то будет выполнен прямоугольный метод упаковки (т.е. присвоение вашему упаковыванию тега “[RECT]UI_Elements” приведёт к прямоугольному методу упаковывания).

Настройка упаковщика спрайтов

Для большинства целей опции DefaultPackerPolicy будет достаточно, однако при необходимости вы сможете реализовать и свою собственную политику упаковки. Чтобы сделать это, вам необходимо реализовать интерфейс UnityEditor.Sprites.IPackerPolicy для класса в скрипте редактора. Данный интерфейс нуждается в следующих методах:

  • GetVersion - возвращает в виде значения версию политики вашего упаковщика. Версию политики необходимо обновить в случае, если в скрипт был изменён и эти изменения были сохранены через контроль версий.
  • OnGroupAtlases - отвечает за реализацию алгоритма упаковки. Укажите атласы в PackerJob и примените спрайты из данных TextureImporters.

DefaultPackerPolicy по-умолчанию использует прямоугольное упаковывание (см. SpritePackingMode). Это может быть полезно, если необходимо использовать текстурно-пространственные эффекты или другой меш для отображения текущего спрайта. С помощью пользовательских прав можно перезаписать эти значения и использовать вместо прямоугольного метода, плотный метод упаковывания.

Начнем с самого простого: загрузки и настройки Unity.

Загрузите последнюю версию с официального сайта или торрента и запустите установочный файл.

Выбор редактора в Unity

Полезно знать: невозможно использовать отладчик Visual Studio 2013 Express с Unity. Вы должны иметь Pro версию Visual Studio и купить UnityVS плагин. С версией Express, вы будете иметь лучший редактор кода, но отсутствие отладчика сведет на нет все его достоинства.

Mac OS X

MonoDevelop 4 - существенно лучше, чем старый MonoDevelop 2 в предыдущих версиях Unity. Он, конечно, далек от совершенства, но ничего лучшего под на Mac не придумано.

На каком языке программировать в Unity?

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

Вот несколько ссылок, которые могут быть вам полезными:

  • Изучение интерфейса Unitys : основа всех основ. Не зная интерфейса, вы не сможете создавать игры в Unity 3D
  • Создание сцены в Unity : изучение этого раздела поможет вам создать свою собственную сцену
Первая сцена. Создаем новый проект.

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

Создание нового проекта в Unity

Выберите 2D настройки. Как и прежде, вы можете изменить этот флаг в настройках проекта позже.

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

Разметка и панели Unity

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

Пустой проект

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

Чтобы держать все под рукой, советуем создать папки во вкладке Project (Проект). Эти папки будут созданы в папке Assets вашего проекта.

Папки в Unity

Внимание: папка Assets – это место, где хранится все, что вы добавляете во вкладке Project. Она может быть невидимой в Unity, в зависимости от выбранной разметки вкладки (одна или две колонки), но вы сможете увидеть ее, открыв приложение для экспорта файлов.

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

Ассеты проекта

В вашей панели Project, вы можете найти различные типы ассетов:

Префабы

Многоразовые игровые объекты (например: пули, враги, бонусы).

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

Сцены

Сцена содержит игровой уровень или меню.

В отличие от других объектов, создаваемых в панели "Проект", сцены создаются в меню "Файл". Если вы хотите создать сцену, нажмите на кнопку "Новая сцена" в подменю и не забудьте потом сохранить ее в папку Scenes.

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

Звуки

Тут все предельно просто. Увидите, если захотите раскидать музыку по разным папкам.

Scripts

Textures

Спрайты и изображения вашей игры. В 2D проекте вы можете переименовать эту папку в "Sprites".

Это неважно для 2D проекта, но, оставив название Textures (Текстуры), вы дадите возможность Unity автоматизировать некоторые задачи. Если вы хотите узнать подробную информацию по этой теме, вы можете прочитать об этом здесь , или здесь .

Заметка о папке Resources : если вы уже работали с Unity, вы знает, что Resources – полезная и уникальная папка. Она позволяет загрузить в скрипт объект или файл (с помощью статичного класса Resources ). Она понадобится нам в самом конце (в главе, посвященной меню). Проще говоря, пока мы не будем ее добавлять.

Наша первая игровая сцена

Панель Hierarchy (Иерархия) содержит все объекты, которые доступны в сцене. Это то, чем вы манипулируете, когда начинаете игру с помощью кнопки "Play".

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

Логические объекты

Как вы можете видеть здесь, у нас здесь 3 потомка для объекта Level .

Пустые объекты

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

Пустые объекты

Убедитесь, что все они имеют координаты (0, 0, 0) и тогда вы сможете легко их найти! Пустые объекты никак не используют свои координаты, но они влияют на относительные координаты их потомков. Мы не будем говорить об этой теме в этом уроке, давайте просто обнулим координаты ныших пустых объектов.

Заполнение сцены

По умолчанию, новая сцена создается с объектом Main Camera (Главная камера). Перетащите ее на сцену.

Для начала создайте эти пустые объекты:

Scripts Мы добавим наши скрипты сюда. Мы используем этот объект, чтобы прикрепить сценарии, которые не связаны с объектом – например, скрипт гейм-менеджера. Render Здесь будет наша камера и источники света. Level

В Level создайте 3 пустых объекта:

  • 0 - Background
  • 1 - Middleground
  • 2 - Foreground

Сохраните сцену в папке Scenes . Назовите ее как угодно, например Stage1 . Вот, что у нас получилось:

Первая сцена на Unity

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

Мы только что создали базовую структуру нашей игры. На следующем этапе мы начнем делать забавные вещи: добавим на сцену фон и кое-что еще!

Добавляем фон в сцену

Наш первый фон будет статическим. Воспользуемся следующим изображением:

TGPA фон

Импортируйте изображение в папку Textures (Текстуры). Просто скопируйте файл в нее, или перетащите его из проводника. Не беспокойтесь сейчас о настройках импорта.

Создайте в Unity новый игровой объект Sprite на сцене.

Новый спрайт для игры в Unity

Что такое спрайт?

По сути, спрайт – это 2D-изображение, используемое в видео-игре. В данном случае это объект Unity для создания 2D-игр.

Добавляем текстуру спрайта

Unity может автоматически установить фон для вашего спрайта. Если ничего такого не произошло, или если вы хотите изменить текстуру, перейдите на вкладку инспектора и выберите background : (фон)

Выбор спрайта в Unity

Вы должны нажать на маленький круглый значок справа от поля ввода, чтобы появилось Select Sprite (Выбрать спрайт) в Инспекторе

Вид спрайта

Итак, мы создали простой спрайт отображающий облака на небе. Давайте внесем изменения в сцену. В панели Hierarchy (Иерархия) выберите New Sprite . Переименуйте его в Background1 или что-то такое, что легко запомнить. Переименуйте его в Background1 или что-то такое, что легко запомнить. Затем переместите объект в нужное место: Level -> 0 - Background . Измените координаты на (0, 0, 0) .

Фон установлен

Создайте копию фона и поместите его в (20, 0, 0) . Это должно отлично подойти к первой части.

Фон 2

Слои со спрайтами

Следующее утверждение очевидно, но обладает некими неудобствами: мы отображения 2D мир. Это означает, что все изображения на одной и той же глубине, то есть 0 . И вы графический движок не знает, что отображать в первую очередь. Слои спрайтов позволяют нам обозначить, что находится спереди, а что сзади.

В Unity мы можем изменить "Z" наших элементов, что позволит нам работать со слоями. Это то, что мы делали в этом руководстве перед обновлением до Unity 5, но нам понравилась идея идея использовать слои со спрайтами. У вашего компонента Sprite Renderer есть поле с именем Sorting Layer с дефолтным значением. Если щелкнуть на нем, то вы увидите:

Сортировка списка слоев

Давайте добавим несколько слоев под наши нужды (используйте кнопку + ):

Добавить сортировку слоя в Unity

Добавьте фоновый слой к вашему спрайту фона:

Установить сортировку слоя

Настройка Order in Layer - это способ ограничить подслои. Спрайты с меньшим номером оказываются перед спрайтами с большими числами.

Слой Default нельзя удалить, так как это слой, используемый 3D-элементами. Вы можете иметь 3D-объекты в 2D игре, в частности, частицы рассматриваются как 3D-объекты Unity, так что они будут рендериться на этом слое.

Добавление элементов фона

Также известных как props. Эти элементы никак не влияют на геймплей, но позволяют усовершенствовать графику игры. Вот некоторые простые спрайты для летающих платформ:

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

Как видите, мы поместили две платформы в один файл. Это хороший способ научиться обрезать спрайты с помощью новых инструментов Unity.

Получение двух спрайтов из одного изображения

Выполняйте следующие действия:

  1. Импортируйте изображения в папку "Текстуры"
  2. Выберите спрайт Platform и перейдите к панели Инспектор
  3. Измените "Sprite Mode" на "Multiple"
  4. Нажмите на кнопку Sprite Editor (Редактор спрайта)

В новом окне ( Sprite Editor ) вы можете рисовать прямоугольники вокруг каждой платформы, чтобы разрезать текстуру на более мелкие части:

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

Кнопка Slice в левом верхнем углу позволит вам быстро и автоматически проделать эту утомительную работу:

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

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

В этом уроке проделаем эту операцию вручную. Назовите платформы platform1 и platform2 . Теперь, под файлом изображения, вы должны увидеть два спрайта отдельно:

Результат редактора спрайтов

Добавим их в сцену. Для этого мы будем выполнять те же действия что и для фона: создадим новый спрайт и выберим platform1 . Потом повторим эти действия для platform2 . Поместите их в объект 1 - Middleground . Убедитесь, что их позиция по оси Z равна нулю.

Две новые платформы

Prefabs (Префабы)

Сохранить эти платформы как префабы. Просто перетащите их в папку Prefabs :

Префабы

Таким образом вы создадите Prefab , точно отвечающий оригинальному игровому объекту. Вы увидите, что игровой объект, который вы конвертировали в Prefab , представляет собой новый ряд кнопок прямо под его именем:

соединение префабов

Заметка о кнопках "Prefab": При последующей модификации игрового объекта, вы можете использовать кнопку "Apply", чтобы применить эти изменения к Prefab , или кнопку "Revert", чтобы отменить все изменения игрового объекта в свойстваъ Prefab . Кнопка "Select" переместит выбранные свойства в ассет Prefab в окне проекта (они будут выделены).

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

Теперь вы можете добавить больше платформ, меняющих свои координаты, размеры и плоскости (вы можете поместить их на заднем или переднем плане, просто установите координату Z для платформы на 0 ).

На данном этапе все это выглядит еще сыроватым, но в следующих двух главах мы добавим параллаксный скроллинг, и сцена оживет у нас на глазах.

Прежде чем двигаться дальше, мы модифицируем наши слои, чтобы избежать каких-либо проблем с порядком их отображения. Для этого просто измените позицию игровых объектов по оси Z во вкладке Hierarchy (Иерархия) следующим образом:

Слой Позиционирование по оси Z
0 - Задний фон 10
1 - Средний фон 5
2 - передний фон 0

При переключении из 2D режима в 3D, в окне "Scene" (Сцена) вы будете четко видеть слои:

Кликнув на игровом объекте Main Camera , вы увидите, что флажок Projection установлен на Orthographic . Эта настройка позволяет камере визуализировать 2D игру без учета трехмерных свойств объектов. Имейте в виду, что даже если вы работаете с 2D объектами, Unity по-прежнему использует свой 3D движок для визуализации сцены. Рисунок выше это наглядно демонстрирует.

В следующем уроке:

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

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

Итак, начнем. Откроем Unity и создадим новый 2d проект

2dUnityProject

Далее создадим две папки с названием Sprite и Animation

Unity5Folder

Ptica2

Перенесли спрайт и теперь выделим его. Справа появится его свойства. В свойствах нам пока понадобится только одно свойство Sprite Mode. Установим режим Multiple, так как наше изображение имеет несколько элементов, и нажмем кнопку Apply.

SpriteMode

Далее, для того чтобы разделить наш спрайт на несколько элементов перейдем в редактор спрайта Sprite Editor в том же свойстве этого спрайта.

SpriteEditor

Перед нами откроется редактор, в котором мы просто выделяем наши 2 элемента по отдельности.

SpriteEditor1

SpriteEditor2

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

Вырезали элементы и далее просто закрываем редактор, на что он спросит вас сохранить изменения или нет.

Итак, наша птица готова, переходим к анимированию. Перенесем спрайт на сцену и Unity спросит у нас куда сохранить файл .anim, в котором будут хранится все последующие анимации данного объекта. Выберем папку Animation и сохраним туда этот файл.

Anim

WindowAnimation

В окне создания анимации выберем наш файл Ptica.anim и создадим новую анимацию Create a new Clip…

PticaAnim

Когда наша новая анимация будет выбрана, рядом в параметре Sample укажем количество кадров 2 , так как у нас всего 2 элемента Спрайта.

Затем перенесем наши 2 элемента в окно редактора анимации, нажмем кнопку записи и кнопку Play.

PticaAnimWiev

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

Перейдем в папку Animation и откроем файл Ptica.anim

AnimSpeed

Здесь вы увидите все те анимации, которые будут использовать наш объект. Для изменения скорости выделим анимацию, которая проигрывается первая по умолчанию (она будет оранжевым цветов) и справа в окне свойства анимации изменим параметр Speed на другое значение.

Unity поддерживает разработку 2D-игр, и для удобства процесса разработки перед созданием нового проекта он может быть определен как 2D.

Picture1

Переключение режима разработки в уже созданном проекте осуществляется через меню Edit – ProjectSettings–Editor–DefaultBehaviorMode–Mode.

Picture2

В 2D-режиме Unity вносит некоторые изменения в настройки редактора:

Рассмотрим некоторые компоненты и события 2D-объектов и их отличия от компонентов и событий,использующихся для 3D-объектов.

BoxCollider2D –это прямоугольный коллайдер, используемый при работе с 2D физикой.

Picture3

2D коллайдер/триггер обрабатывает события (сталкивание, пересечение и т.д.) независимо от того, где он располагается по координате Z. Все свойства коллайдера точно такие же, как и у BoxCollider, за исключением одного. Переключатель Used By Effector отвечает за то, используется ли данный коллайдер прикрепленным компонентом – Effector 2D (данные компонент бывает разного типа: точка, область, платформа и т.д.).

  • Material – физический материал, который определяет свойства столкновений, такие как трение и отскок.
  • IsTrigger – является ли коллайдер триггером?
  • Used by Effector – используется ли данный коллайдер прикрепленным компонентом – Effector.
  • Auto Tiling – установите этот флажок, если компонент Sprite Renderer установлен в режим Tile. Это позволит автоматически, обновлять форму коллайдера, которая будет корректироваться по форме спрайта.
  • Offset – локальное смещение геометрии коллайдера.
  • Size – ширина и высота прямоугольника в единицах локального пространства.
  • Edge Radius – смягчает грани, делая коллайдер более круглым, по умолчанию значение равно
  • Info – общая информация о состоянии коллайдера.

Визуальное отображение пустых объектов с 2D- и 3D-коллайдерами при включении 3D-режима в окне сцены:

Picture4

Rigidbody2D – компонент помещает объект под контроль физического движка. В целом компонент похож на Rigidbody, но объект может двигаться только в плоскость XY, а вращаться только перпендикулярно этой плоскости.

Picture5

  • UseAutoMass – рассчитать массу автоматически,исходя из коллайдера;
  • GravityScale – как гравитация воздействует на объект;
  • Sleeping Mode – режим, когда объект выключается из физической симуляции (в целях оптимизации).
  • Never Sleep – всегда активен (необходимо стараться избегать данного режима);
  • Start Awake – активен при запуске (режим включен по умолчанию);
  • Start Asleep – не активен при запуске, но может быть разбужен (столкновением или через скрипт).

Настройки спрайта (Import Settings)

После импорта изображения в проект в 2D-режиме разработки его настройки по умолчанию выглядят следующим образом:

Picture6

  • В верхней части находится иконка – превью спрайта (также превью находится в нижней части инспектора), отображается название файла, кнопка Open, которая открывает изображение в программе просмотра изображений, установленной в системе по умолчанию.
  • Texture Type – устанавливает базовые параметры в зависимости от предназначения текстуры(изображения).
  • Sprite Mode – устанавливает, в каком режиме спрайт будет извлекаться из изображения, как один спрайт (Single) или как несколько раздельных спрайтов (Multiple). Второй режим может использоваться для импорта спрайтов как кадров анимации, а также как несколько спрайтов, относящихся к одному объекту. Третий режим Polygon позволяет настраивать форму, размер и pivot point для вашего спрайта.
  • PackingTag – имя атласа, в который данное изображение должно быть запаковано.
  • Pixels Per Unit – количество пикселей в изображении спрайта, которые соответствуют одному юниту (внутренняя единица измерения в Unity).

Данный компонент позволяет отображать спрайты и используется как в 2D, так и в3D-сценах.

Picture7

Компонент имеет следующие свойства:

  • Sprite – спрайт.
  • Color – цвет.
  • Flip – отражение спрайта по оси X или Y.
  • Material – материал, стандартные шейдеры, которые используют для материала спрайта – Sprites/Default (не взаимодействует с освещением на сцене), Sprites/Diffuse (взаимодействует с освещением на сцене).
  • Draw Mode – выберите параметр из списка Draw Mode, чтобы определить, как масштабируется спрайт при изменении его параметров.
  • Simple – это значение по умолчанию. Изображение изменяется во всех направлениях,когда его размеры меняются.
  • Sliced – применяйте это, если хотите нарезать спрайт на 9 частей, чтобы эти части можно было растягивать. В этом режиме углы остаются одинаковыми, верхняя и нижняя часть тянутся в собственную высоту, а центр тянется в ширину и высоту.
  • Size – используйте это значение, чтобы изменить горизонтальный и вертикальный размер спрайта. Если вы хотите, чтобы slice работала корректно, вам нужно настроить это значение. Компонент Transform применяется только по умолчанию.
  • Tiled – применяйте это если хотите нарезать спрайт на 9 частей, чтобы эти части можно было повторять. В этом режиме углы остаются одинаковыми, верхняя и нижняя часть тянутся в собственную высоту, а центр тянется в ширину и высоту.

С помощью этого инструмента можно создавать временные заменители спрайтов. Их можно использовать в проекте в процессе разработки, а затем, когда будет создана необходимая графика, заменить. Для создания таких спрайтов необходимо выбрать меню Assets – Create – Sprites, далее один из доступных типов спрайтов: Square, Triangle, Diamond, Hexagon, Circle, Polygon.

Через меню Assets – Create создаются не объекты, а ассеты, поэтому после создания спрайта в папке проекта появляется новый ассет, а на сцене ничего не изменяется. Далее необходимо добавить созданный спрайт на сцену.

Спрайты в окне проекта:

Picture8

Спрайты на сцене:

Picture9

При создании спрайта Polygon открывается Sprite Editor, где можно изменить форму спрайта и некоторые его параметры. Далее более подробно об этом редакторе.

Чаще всего спрайт – это одно изображение, но иногда спрайт содержит несколько элементов, которые каким-либо образом связаны друг с другом и объединены в одно изображение. Для работы с такими спрайтами в Unity есть специальный редактор.

Если для спрайта установлен режиме Sprite Mode – Single, часть функций редактора недоступна, и он выглядит следующим образом:

Picture10

В режиме SpriteMode – Multiple:

Picture12
Picture11

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

Необходимо указывать Packing Tag в настройках текстуры, чтобы включить упаковку спрайтов для данной текстуры.

По умолчанию упаковщик спрайтов отключён, но его работу можно настроить через настройки редактора Edit->Project Settings->Editor. Метод упаковывания спрайтов можно установить в состояние Enabled for Builds (упаковывание будет работать для сборок, но не в режиме Play) или в состояние Always Enabled (упаковывание будет работать и во время сборки и в режиме Play).

Указав для нескольких текстур (спрайтов) одинаковый Packing Tag, можно открыть Windows – SpritePacker, нажать кнопку Pack и посмотреть расположение текстур в атласе.

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

Инструменты в верхней части окна упаковщика спрайтов:

  • Pack – инициализирует операцию упаковывания.
  • Repack – переупаковка атласа (обновление).
  • View Atlas – атлас, который необходимо отобразить в окне (если при максимальном размере текстуры в неё не помещаются все спрайты, атлас может быть разбит на множество страниц).
  • Page – позволят выбрать страницу атласа, которую необходимо отобразить в окне.
  • Меню, следующее за номером страницы – выбор правил упаковывания использующиеся для текущего атласа.

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

Атласы кешируются в Project\Library\AtlasCache. Удаление этой папки и последующий запуск Unity приведёт к принудительной перепаковке всех атласов. Во время удаления Unity необходимо закрыть. Максимальный размер атласа по умолчанию равен 2048х2048. При назначенном свойстве PackingTag текстуры не будут сжиматься, чтобы упаковщик спрайтов мог использовать оригинальные значения пикселей при сжатии атласов.

FPS – аббревиатура от Frames Per Second, что в переводе на русский означает количество кадров в секунду. Видео – это процесс смены статических кадров. Каждый кадр – это статическое изображение. Количество кадров в секунду – это скорость смены изображений.

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

Человеческий глаз способен воспринимать смену картинок, как видео при смене не менее 25-30 кадров в секунду.

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

Чем ниже показатель FPS, тем меньше кадров для логики. В этих самых кадрах и происходит наша игровая логика, поэтому задача программиста оптимизировать работу каждого кадра.

Picture13

Основные методы класса MonoBehaviour

MonoBehaviour – класс, на базе которого (наследуются) по умолчанию создаются все скрипты в Unity. Скрипты создаются через контекстное меню в окне проекта, через меню Component на верхней панели инструментов, при помощи кнопки Add Component в окне инспектора (когда выделен какой-либо объект). Скрипт работает только тогда, когда он является компонентом объекта на сцене, причём некоторые функции (методы) скрипта могут срабатывать даже тогда, когда сам скрипт выключен(неактивен).

Для редактирования скрипта после его создания необходимо дважды нажать на него ЛКМ в окне инспектора или в окне проекта. Скрипт откроется в той среде разработки, которая указана в настройках Editor–>Preferences–>External Tools–>External Script Editor (обычно это Visual Studio или MonoDevelop). Там же можно сменить среду разработки.

Имя класса в скрипте должно совпадать с именем файла (это происходит автоматически, при создании файла). По умолчанию в скрипте создаются две функции (метода) – Start() и Update(), но существуют и другие функций, которые могут быть использованы как унаследованные от MonoBehaviour. Так же можно создавать свои функции.

По умолчанию скрипт выглядит следующим образом:

Функция, которая вызывается один раз при запуске игры до функции Start(). Вызывается в случайном порядке среди объектов на сцене, для которых она реализована. Функция срабатывает даже тогда, когда скрипт не активен.

Функция, которая также вызывается один раз, но в тот момент, когда скрипт становится активным. Вызывается перед функций FixedUpdate(),Update()ит.д.

Функция, которая выполняется каждый фиксированный отрезок времени. Можно настроить в Edit–>Project Settings–>Time – Fixed Time step. Используется для обработки физики (приложения силы, импульса к объект у и т.д.)

Функция, которая выполняется каждый кадр. Используется для обработки игровой логики.

Для того, чтобы реализовать выполнения какой-либо действия с определенной частотой, например, раз в секунду,используют Time.deltaTime * 1 .

deltaTime – время (в секундах), прошедшее с последнего кадра. Это значением позволяет сделать игру независимой от скорости смены кадров.

Функция, которая выполняется каждый кадр. Вызывается после того, как все Update() функции будут вызваны. Используется для того, чтобы упорядочить выполнения действий в скрипте. Например, если камера следует за объектом, движение которого реализовано в Update() функции.

Рассмотрим проект на примере 2D Platformer'a от UnityTech.

Picture14

Давайте разберем, из чего состоит основа геймплея 2DPlatformer'a.

Самым важным объектом является игрок, поэтому с него мы и начнём.

Picture15

Picture16

Итак, наш персонаж состоит из множества компонентов, основным из них является Player Control, который позволяет нам перемещаться, прыгать и даже издавать звуки. Этот компонент завязан на анимации и физике поэтому, чтобы его использовать, нам понадобится добавить аниматора и физические компоненты.

Аниматор - позволит нам анимировать нашего героя.

Picture17

Rigidbody позволит физически взаимодействовать с препятствиями, а чтобы мы не проваливались под пол и фиксировать столкновения с препятствиями, нам понадобится Box Collider2D.

Picture18

Picture19

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

Picture20

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

Picture21

Теперь можно расставлять объекты на сцене, просто перетаскивая их из окна Project. Буквально за несколько движений мы с вами уже сделали свой уровень с персонажем.

Picture22

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

** Проект 1 (Используя готовый проект собрать свой игровой уровень)

Проект 2 (Используя графику, анимации, звуки реализовать простейший раннер)

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

Читайте также: