Настройка SortingLayer для любого объекта в Unity 2D.

Обновление: 31 декабря, 2018 года

Содержание статьи устарело. У Unity, с момента написания статьи, вышло огромное количество обновлений. И теперь можно настраивать SortingLayer во многих местах, включая системы частиц, например.


В Unity3D версии 4.3 появился долгожданный 2D фреймворк, принесший с собой механизм работы со спрайтами, за отображение которых отвечает “Sprite Renderer”. Как работать со спрайтами есть множество туториалов и видео в сети, я же хочу остановиться на двух важных настройках, которые есть в “Sprite Renderer”, и проблеме использования 3D объектов Unity в 2D играх.

Важные настройки это: “Sorting Layer” и “Order in Layer”:

Зачем нужны эти два параметра? Если кратко, в 2D фреймворке не используется z-координата, она никак не влияет на порядок отображения объектов в сцене. За порядок отображения отвечает другой механизм – механизм слоев. Можно управлять порядком отображения спрайтов в сцене путем назначения спрайту определенного слоя (“Sorting Layer”), а так же, при необходимости, порядок отображения внутри конкретного слоя можно настраивать с помощью параметра “Order in Layer”.

Continue reading “Настройка SortingLayer для любого объекта в Unity 2D.”

SortingLayer settings for any object in Unity 2D.

This article is obsolete now. Unity got many new features and it is possible to set SortingLayer now from many places.


In Unity3D 4.3 version there was a long-awaited 2D framework, which brought with itself the work mechanism with sprites, for display of which “Sprite Renderer” is responsible. There is a set of tutorial and video in a network how to work with sprites, I just want to stop on two important settings which are in “Sprite Renderer”, and on a use problem of 3D objects of Unity in 2D games.

Important settings are: “Sorting Layer” and “Order in Layer”:

Why these two parameters are necessary? In a nutshell in 2D framework z-coordinate isn’t used, it doesn’t effect on displaying order objects in a scene. For displaying order other mechanism is responsible – it’s mechanism of layers. It’s possible to operate displaying order of sprites in a scene by appointment of a certain layer (“Sorting Layer”) to sprite, and also, if necessary, displaying order internally of a concrete layer can be adjusted by means of “Order in Layer” parameter.

Displaying order of layers in a scene is adjusted in a window of editing layers:

But Unity3D comprises the mass of interesting functionality, which was made for 3D and which wants to be used in 2D. For example, particles system. Let’s say, in 2D scene you want to use effects from particles system and place one of effects on 2D scene. Here you receive a problem of incorrect displaying of effect (it can be expressed in different ways – partial displaying of effect, blinking, full invisibility and another). Manipulations with z-coordinate won’t lead to necessary result as at 2D displaying of scenes z-coordinate doesn’t effect on displaying order.

This problem is easily solved. “Sorting Layer” and “Order in Layer” properties were added not to class “SpriteRenderer”, but tо basic class “Renderer”, which other classes are inherited, and which are responsible for displaying, but as settings were taken out only for class “SpriteRenderer”, and in others aren’t available. Therefore, we need to write own component which will establish a layer and an order in layer for any renderer.

For myself I wrote such component which can be taken according to links: SortingLayerSettings (a component) and SortingLayerSettingsEditor (editor extension for parameters settings).

Added both scripts to the project, it is possible to add SortingLayerSettings component on any object and to adjust a displaying order of object in 2D scene. For example for “3D Text”:

And it is easy to operate displaying order:

Thus, we can easily use Unity3D objects in 2D scenes. Mechanism perfectly works! On personal experience I used system of particles and 3D text in several projects. I suppose with other types of objects there will be no problems.

Practically, SortingLayerSettings component doesn’t make sense after we specified the necessary layer for object. But at the time of application development there is a need in it, as it can be necessary in operating time of game to experiment with layers or to see, for which layer this or that object belong. But during game release there is a sense to remove all “SortingLayerSettings” from all objects.

Методы организации взаимодействия между скриптами в Unity3D.

Вступление.

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

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

Подход 1. Назначение через редактор Unity3D.

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

Назовем оба скрипта менеджерами: ScoresManager и HUDManager.
Каким же образом менеджеру, отвечающему за меню экрана можно получить текущее количество очков от менеджера, отвечающего за начисление очков?

Предполагается, что в иерархии объектов(Hierarchy) сцены существуют два объекта, на один из которых назначен скрипт ScoresManager, а на другой скрипт HUDManager.

Один из подходов, содержит следующий принцип:

В скрипте UIManager определяем переменную типа ScoresManager:

public class HUDManager : MonoBehaviour
{
	public ScoresManager ScoresManager;
}

Но переменную ScoresManager необходимо еще инициализировать экземпляром класса. Для этого выберем в иерархии объектов объект, на который назначен скрипт HUDManager и в настройках объекта увидим переменную ScoresManager со значением None.

Continue reading “Методы организации взаимодействия между скриптами в Unity3D.”

Январьский отчет 2014г.

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

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

Чем я занимался в течение месяца.

1.Фрилансил над тремя проектами с целью заработка денег на ежедневные расходы. Так как проекты еще в разработке, считаю не корректно выкладывать скриншоты или еще какую-либо информацию по ним. По завершению расскажу отдельно.

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

2.1.Первый проект Space Travel, написанный в начали прошлого года, тогда был признан мною неудачным и брошен на середине рефакторинга и переделки 3D механики в 2D. Текущее состояние проекта оказалось ужасным и время, которое я оценил на приведение его в порядок было слишком большим и не стоило усилии. Решил ничего с проектом не делать и закрыть его окончательно.

 

Continue reading “Январьский отчет 2014г.”

Приветствие и отчет за декабрь 2013г.

Всем привет!

Этим постом я открываю свой блог, на создание которого меня вдохновил Matthew Bowden и его ежемесячные отчеты (http://www.truevalhalla.com/blog/).
У блога две цели. Первая – это писать развернутые статьи по технологиям, которыми я владею или овладеваю. И вторая – ежемесячные отчеты о моих онлайн доходах.
И пусть первая цель стандартная – в сети существуют тысячи блогов, в которых авторы пишут о чем только можно написать. Вторая же цель является для меня более важной. Это некий публичный контракт, о котором мне придется ежедневно думать и что-то делать для демонстрации ежемесячного прогресса.

Зачем мне это?


2013 год прошел для меня под знаменем увольнения с постоянной работы и попытками научиться зарабатывать на жизнь фрилансом. Попытки оказались в меру успешными и теперь нужно двигаться дальше.
На 2014 год я поставил себе другую цель – получение долгосрочного пассивного дохода. Все свое свободное время я буду концентрировать на этой задаче, искать различные пути ее решения и экспериментировать с разными подходами.

В планах проработать следующие способы онлайн заработка:

  • Разработка простых игр на Unity3D и распространение их по веб-порталам. Монетизация от рекламы. По прикидкам, не очень перспективное направление, все порталы используют Flash, а количество геймплеев Unity3D игр на таких порталах показывает удручающую статистику. Но попробовать стоит.
  • Pазработка простых Unity3D игр для мобильных устройств. Этот вариант более перспективен. Огромной прибыли на небольших играх не заработаешь, но некоторый пассивный доход, предполагаю, можно получить. Монетизация путем рекламы и внутренних платежей.
  • Pазработка плагинов для Unity Asset Store. Перспективы не до конца понятны. 2 миллиона скачек Unity3D и 300 тысяч активных разработчиков в месяц. Количество плагинов в магазине велико, но вариантов на все случаи жизни нет, очень многого не хватает. Попробую занять какую-нибудь нишу.
  • Доработка старого проекта для социальных сетей (игровые автоматы) до прибыльного состояния. Выход в одноклассники и фейсбук, а так же, на мобильные платформы. В этом проекте я являюсь партнером и очень многое от меня не зависит.
  • Разработка более сложной  и глубокой игры вместо примитивных. Планирую дорабатывать функционал игры Dragon Tale и плавно доводить ее до релиза.
  • Cвой портал игр. Для начала, необходимо провести исследование по этому вопросу.

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

Что было сделано за декабрь.

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

  • Много занимался «Вишневым Казино». Основным достижением команды был выпуск игры в соцсети «Мой Мир» (Вишневое Казино в Моем Мире).
  • Разрабатывал следующую версию плагина  «Coins Launcher», но до релиза ее не успел довести.
  • Фрилансил.
Источник дохода
Доход
Unity Assets Store plugins
14$
Unity Games for web
0$
Unity Games for mobile
0$
Итого
14$
Как видно из таблицы доходов я в самом начале пути. Мой месячный доход составил 14$ и получил я его путем двух продаж плагина Coins Launcher.

Очень много работы и планов впереди. До встречи в следующем месяце и с наступающим Новым Годом!

Из соцсетей – 4, 2012г

Apr 5, 2012

Notch (создатель Maincraft) делает новую игру. В ней надо будет программировать космические корабли на специально созданном языке программирования (DCPU-16) и заниматься стандартными рпгшными вещами (лутинг, торговля, битвы, крафт, исследования вселенной).
Жду! 🙂

hqdefault

Continue reading “Из соцсетей – 4, 2012г”

Из соцсетей – 3, 2012г

Jan 4, 2012

Ляписы в последние годы прекрасны.
Какая чудесная трансформация группы, солиста и их творчества с течением времени.


Jan 6, 2012
Российские разработчики делают MyBrute с блекджекомишлюхами.
Кто помнит старый добрый майбрут тем сюда: http://musicwars.ru/
Все то же самое только лучше, с квестами, магазинами и free to play’ем.
Анимация и разнообразие боя лучше чем в оригинальном майбруте!
1


Jan 11, 2012
Секрет успеха – пахать нужно!
2


Jan 27, 2012

Ремейк музыки из Донни Дарко под видеоряд смертей из старых игр.

Continue reading “Из соцсетей – 3, 2012г”

Из соцсетей – 2, 2011г

Sep 27, 2011
Visual Studio очень хорошая IDE с множеством удобных решений. Но её разработчикам все таки стоит смотреть другие IDE и перенимать чужие идеи. В Eclipse есть удобная “фича”, я называю ее “контекстно зависимой кареткой”. Во время кодирования бывают случаи, когда вам видны две корретки: первая – стандартная – место куда вставляется набираемый текст, вторая – контекстная – место куда перейдет первая картека при нажатии на кнопку Tab.

К примеру, вы объявляете метод и каретка находится внутри скобок.

Eclipse: чтобы переместить каретку в конец метода и поставить “;” нужно просто нажать Tab и каретка займет место конекстной каретки.

Visual Studio: чтобы переместиться в конец метода и поставить “;” нужно либо мышкой щелкнуть либо использовать стрелочки либо кнопку End нажать. Все эти способы на много дольше выполняются, а используемые при этом кнопки находятся в неудобных местах, я уже не говорю про мышку.

Механизм напоминает создание куска когда по шаблону в Visual Studio когда с помощью Tab’a мы перемещаемся по участку кода и заполняем параметры шаблона. Только в случае Eclipse контекстная каретка появляется на много чаще в самых разнообразных случаях и не плохо ускоряет набор и избавляет от нужды использовать стрелки на клавиатуре или мышку.
Пытался найти плагин для Visual Studio который реализует такое поведение каретки, но поиски прошли безуспешно. Если кто-то видел что-то похожее то дайте знать.

coret_examples Continue reading “Из соцсетей – 2, 2011г”