Ariandor

Ariandor

Пикабушник
56 рейтинг 0 подписчиков 1 подписка 6 постов 0 в горячем
Награды:
10 лет на Пикабу

Моя игра за ночь.

В поддержку пятничного тэга.
Месяц назад одной из групп ВКонтакте по Unity3D проходил конкурс "игра за ночь". Ну и я склипал поделку. Сегодня разбирал прототипы, и нашел проект. Суть в том чтобы пройти уровень, но есть одно но: уровень виден далеко не всегда и не весь. Вот сижу и думаю, может доделать...
Кому интересно, ссылка на сборку для браузера в комментариях.
3

Исследование UI в Unity 4.6 beta

Я помню что у вас тут были люди которые писали про Unity3D, так что вот вам заметочка:)

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

Исходя из исследований методом тыка, основным объектом без которого построение UI невозможно является Canvas. Он отвечает за отрисовку элементов интерфейса и проброс событий к ним. Так же у канваса есть 3 варианта отрисовки UI: ScreenSpace - Overlay, ScreenSpace - Camera и WorldSpace.

ScreenSpace - Overlay и ScreenSpace - Camera
Как видно из названия режимов, они работают с экранными координатами. Это позволяет собирать PixelPerfect интерфейс, но если Вам нужно чтобы интерфейс выглядел одинаково на всех разрешениях, или Вы хотите создать 3D UI - эти варианты Вам не подходят.

WordlSpace
Этот режим отрисовывает элементы в мировом пространстве, так что если у вас нет камеры в которую они будут попадать, то вы их можете не увидеть. Этот режим меня заинтересовал, так как позволяет создавать UI, который будет выглядеть одинаково независимо от разрешения экрана. Единсвенная небольшая проблема - это то что Canvas, в отличии от предыдущих режимов, не реагирует на изменение аспекта экрана. Но эта проблема решается простым скриптом, управляющим шириной/высотой канваса при старте.

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

Во первых:
Чтобы Ваш UI работал, необходимо иметь на сцене EventSystem. EventSystem это компонент который занимается обработкой событий пользователя и передачей их в UI.
Обработка событий происходит в InputModule компонентах. Я встретил 2 (StandaloneInputModule для ПК, консолей и веба и TouchInputModule для мобильников и планшетов). Причем судя по их настройках они могут хотябы частично быть взаимозаменяемыми.
InputModule отлавливает события пользователя и передает их в EventSystem, которая уже направляет все это дело в UI. Но как же определяется активный элемент был нажат? За это отвечает GraphicRaycaster.

GraphicRaycaster
Этот компонент находится на Canvas-е и в ответ на нажатие мыши/тач определяет какому объекту надо послать событие. Всего в новом UI есть 3 типа рэйкастеров: рэйкастер для 2D физики, рейкастер для 3D физики и рэйкастер для графических элементов. По умолчанию на гейм объект добавляется последний.
У этого рейкастера есть один огромный недостаток: чтобы объект получил событие, он должен иметь графическую составляющую. Другими словами, если Вы хотите создать прозрачную область экрана, которая будет запускать то или иное действие по нажатию, Вам придется создавать компонент с графикой и делать его полностью прозрачным. По моему это очень неудобно, хорошо что есть возможность расширить эту систему введением новых рейкастеров.

Немного о коде.
Систему UI можно разделить на 3 части: система генерации событий (UnityEngine.Events) - нововведение в Unity 4.6, затрагивает не только UI, но и системы физики и рендера, система отлова событий (UnityEngine.EventSystems) и непосредственно логику UI (UnityEngine.UI). Причем первая система является частью основной билиотеки движка, а остальные 2 частью библиотеки UI.

Events
В этом пространстве имен собраны класы описывающие базовую струкру евентов. Существует 2 типа классов: UnityAction (источник события) и UnityEvent (слушатель события, при этом есть возможность слушать несколько событий). Они могут принимать до 4х параметров следующих типов: EventDefined, Void, Object, Int, Float, String, Bool (исходя из описания в Enum PresustentListenerMode).

EventSystems
Это простарнство имен содержит в себе классы и интерфейсы обеспечивающие обработку событий вля элдементов UI, при этом на каждое событие существует свой интерфейс. Также в этом пространстве имен находятся рейкастеры для физики и базовый класс для описания поведения UI элементов - UIBehaviour и настройки режимов ввода.

UI
Тут находятся классы непосредственно связянные с элементами UI. В том числе и описание для GraphicRaycaster-а, а также куча интерфейсов связанных с событиями. Это пространство имен я еще только начал исследовать, именно там кроется ключ к написанию собственных элементов UI.

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

Помогите подготовиться к LudumDare.

На следующей неделе будет проходить очередной конкурс разработчиков игр LudumDare. Суть конкурса в том что дается тема и за 1 или 3 суток (в зависимости от категории участника) нужно сделать игру на заданную тему. Я собираюсь в нем поучаствовать, но надо размяться. Пожалуйста, предложите в комментариях темы для игры, на ту которая к вечеру наберет больше плюсов я завтра сделаю игру и выложу ее.
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества