• Работа с EventSystem в Unity. Базовые вещи в работе с UI

      Всем привет! Давно ничего не писал, но сейчас захотелось рассказать про очень удобную штуку, о которой многие не знают. Это Event System в Unity. Многие, для задач в которых EventSystem очень удобен, используют обычный Raycast. Я расскажу про то, как пользоваться частью функционала EventSystem (его на самом деле очень много) и как этот инструмент позволяет быстро решать многие задачи связанные с обработкой событий интерфейсов и объектов. Как всегда с репозиторием с примерами. Если вам интересно — добро пожаловать под кат!


      Читать дальше →
      • +20
      • 3,3k
      • 5
    • Кто на новенького? Мой первый опыт в разработке игры – от идеи до публикации

      image

      Всем привет! Меня зовут Алексей, я из Санкт-Петербурга. В этой статье расскажу про свой первый опыт разработки мобильной игры под Android на Unity3d.

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

      Также интересно мнение опытных и успешных инди-разработчиков!

      Итак, вот моя история.
      Читать дальше →
    • Локализация на основе ScriptableObject для Unity3D

        Введение


        Приветствую Вас, уважаемые читатели. В данной статье пойдет речь о создании системы локализации приложений, созданных в среде Unity3D, в основе которой лежит использование класса ScriptableObject, что позволяет локализовать не только текст, но и звуки и изображения, а также загружать такие данные извне.
        Читать дальше →
      • Создаём файтинг в Unity: реализация Hitbox и Hurtbox

        • Перевод
        image

        Объяснение


        Что же такое hitbox и hurtbox? Разве это не одно и то же?

        Ответ может зависеть от того, кому вы зададите вопрос, но в статье мы будем придерживаться мнения, что hitbox и hurtbox — это два различных понятия с разным применением, как это бывает в любой достойной игре-файтинге.

        Hitbox — это невидимый прямоугольник (или сфера), определяющий, куда попадает атака.

        Hurtbox — это тоже невидимый прямоугольник (или сфера), но определяющий место, в которое игрок или объект может ударить с помощью Hitbox.


        На этом изображении из Street Fighter IV красный прямоугольник — это hitbox, а зелёный — hurtbox
        Читать дальше →
        • +18
        • 4,4k
        • 1
      • Автоматическая сборка Unity-проектов для Android и iOS с помощью Gitlab CI

        В этой статье хочу рассказать о подходе к сборке Unity-проектов на android и ios через Gitlab на собственных сборщиках с macOS.


        Я работаю в небольшой gamedev компании, и задача автоматизации сборки появилась из-за следующих проблем:


        • 5 распределенных команд должны собирать проекты из любой точки мира
        • должны поддерживаться разные версии юнити
        • сборщик должен обеспечивать как минимум 5 сборок в неделю от каждой команды
        • сертификаты должны храниться централизованно, а не у разработчиков
        • собранные билды должны быть доступны по ссылке в любой точке мира
        • проекты должны проверяться на наличие обязательных библиотек (рекламные sdk и коды, локализация, сохранения)
        • конфигурирование сборки для команд должно производиться в одном месте
        Читать дальше →
      • Убираем мусор от XCode

          image

          На макбуке кончается место, и остро стоит вопрос что бы прибить. Не понятно, куда оно делось? Знакомая ситуация?

          Возможно для кого-то будет новостью, что есть куча мусора, оставшаяся после разработки в XCode, который можно безболезненно прибить. Об этом и поговорим…
          Читать дальше →
        • Ой, у вас баннер убежал!

          Ну. И что?
          Реклама
        • Четыре способа работы с текстом UI в Unity

          • Перевод
          В процессе преобразования старого кода Unity на основе 2D Toolkit в чистый код Unity я столкнулся с проблемой: в Unity есть замечательная поддержка стандартных форматов шрифтов, но этого всё равно недостаточно, чтобы сравниться поддержкой создания шрифтов из листов спрайтов в tk2d.


          Пример спрайтового шрифта

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

          Поэтому я приступил к каталогизации различных опций, которые предоставляет Unity при работе с текстом UI (в том числе недавно приобретённого Unity и встроенного в версию 2018.1 TextMesh Pro). Хотя мои знания типографики довольно узки (а тема эта, похоже, очень сложна), статья позволит вам понять, какие возможности существуют и как их можно использовать.
          Читать дальше →
        • Unity, ECS и все-все-все


            Сколько уже было мануалов "Как сделать игру на Unity за 3 часа", "Делаем Counter-Strike за вечер" и т.п.? Низкий порог входа — это, несомненно, главный плюс и минус Unity. Действительно, можно накидать “ассетов”, дописать несколько простых “скриптов”, обмотать синей изолентой и это даже будет как-то работать. Но когда проект обрастает игровыми механиками, сложной логикой поведения, то проблемы при подобном подходе нарастают как снежный ком. Для внедрения новых механик требуется переписывание кода во многих местах, постоянная проверка и переделывание префабов из-за побившихся ссылок на компоненты логики, не говоря уже об оптимизации и тестировании всего этого. Разумеется, архитектуру можно продумать изначально, но на практике это всегда недостижимая цель — дизайн-документ довольно часто меняется, какие-то части выкидываются, добавляются абсолютно новые и никак не связанные со старой логикой поведения. Компоненты в Unity — это шаг в правильном направлении в виде декомпозиции кода на изолированные блоки, но особенности реализации не позволяют достичь необходимой гибкости, а самое главное, производительности. Разработчики придумывают свои фреймворки и велосипеды, но чаще всего останавливаются на ECS (Entity Component System). ECS – одно из решений, продолжающее идею компонентной модели Unity, но придающее ей ещё больше гибкости и сильно упрощающее рефакторинг и дальнейшее расширение приложения новым функционалом без кардинальных изменений в текущем коде.

            Читать дальше →
          • Трассировка лучей на GPU в Unity

            • Перевод
            Для трассировки лучей (ray tracing) настали удивительные времена. Компания NVIDIA реализует ускоренное с помощью ИИ шумоподавление, Microsoft объявляет о нативной поддержке в DirectX 12, а Питер Ширли продаёт свои книги по свободной цене (pay what you want). Похоже, что трассировка лучей наконец получила шанс быть принятой при дворе. Возможно, говорить о начале революции ещё слишком рано, но уже определённо стоит начать изучать и накапливать знания в этой области.

            В этой статье мы напишем с нуля в Unity очень простой трассировщик лучей с помощью compute shaders. Скрипты мы будем писать на C#, а шейдеры — на HLSL. Весь код выложен на Bitbucket.

            В результате у нас получится отрендерить нечто подобное:

            Читать дальше →
            • +38
            • 6,1k
            • 6
          • Сравнение скорости разных вариантов взаимодействия скриптов Unity3D

            Вступление


            Я довольно посредственно знаю Unity, так как только относительно недавно начал изучать его и писать свой первый проект, поэтому эта статья ориентирована на таких же как я.


            Я, как наверное и любой кто начинал писать на юнити, быстро понял, что самого банального метода взаимодействия (через синглтоны-менеджеры, Find, GetComponent и т.п.) становится недостаточно и нужно искать новые варианты.


            И тут на сцену выходит система сообщений/уведомлений


            Порывшись в разных статьях я нашел несколько различных вариантов реализации этой системы:


            • На основе встроенного UnityEvents
            • С использованием классической для C# пары Event/Delegate
            • Еще один встроенный старый встроенный функционал SendMessage

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


            Окей, у этого подхода, видимо, есть существенные проблемы со скоростью, но как тогда обстоят дела у других?


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


            Сравнивать решил эти 3 подхода, а так же обычный прямой вызов функции на объекте по его ссылке.
            И как бонус — посмотрим наглядно, как медленно работает Find при поиске объекта каждый Update (о чем кричат все гайды для новичков) Погнали.

            Читать дальше →
          Самое читаемое