Buffer icon Проекты
132 заметки с тегом

unity

Позднее Ctrl + ↑

Рассылка по Unity

Mopsicus Newsletter subscribe

Mopsicus Newsletter subscribe

Mopsicus Newsletter subscribe

Решил сделать ежемесячную email рассылку по Unity, играм и разработке.

За месяц скапливается много черновиков, но не все они тянут на статью, а постить мелкие разрозненные заметки не хочется. Поэтому подумал в сторону рассылки.

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

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

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

Присоединяйтесь!

? Ссылки на все выпуски можно найти по тегу: рассылка.

Firebase под контролем

Обновлено: 16.10.2020
С последними версиями FB этот фокус не работает :(
Точнее инициализация работает когда апп активен, но при выключенном приложении пуши не приходят, FirebaseInitProvider не инициализируется. Разбираюсь...

Firebase Android

Firebase Android

Firebase Android

У меня есть плагин для Unity, который отвечает за уведомления, как локальные так и PUSH. Firebase даёт файлик google-services.json, который нужно добавить в Android проект или плагин, и при сборке, уже Gradle плагин прочитает из этого файла, создаст XML и позже Firebase будет инициализироваться автоматически в приложении.

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

Можно инициализировать Firebase вручную с нужными параметрами. Т. е. всё что лежит в JSON файле, можно передать в конструктор и оно будет работать. Для этого, надо добавить в манифест:

<provider
    android:name="com.google.firebase.provider.FirebaseInitProvider"
    android:authorities="${applicationId}.firebaseinitprovider"
    tools:node="remove"
    />

Теперь Firebase автоматически не инициализируется. А чтобы сделать это самому, в плагине, при старте Unity приложения будет вызываться функция с конструктором и нужными параметрами уже из конфига игры или приложения:

FirebaseOptions.Builder builder = new FirebaseOptions.Builder()
    .setApplicationId("your_app_id")
    .setApiKey("your_api_key")
    .setDatabaseUrl("your_link_to_db")
    .setStorageBucket("your_storage-url");
FirebaseApp.initializeApp(this, builder.build());

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

Как извлечь ассеты и C# код из APK

Две небольшие статьи одного автора, про то, как извлечь ассеты из APK файл Unity проекта и как получить C# код от туда же. Конечно он будет не в идеальном виде, но всё же.

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

Если хотите хоть как-то усложнить жизнь таким «хакерам» и защитить свой проект, можно использовать обфускаторы кода, такие есть на Github и в Unity Asset Store.

Unity, нейросеть и птички

Очень простой и понятный пример обучения нейросети с линейной функцией активации. Короче, для самых начинающих. Можно переделать под что-то своё и поинтересней.

Спойлер.
В примере, птички обучились пролетать препятствия за 40+ генераций.

Исходники на Github

 1 комментарий    1875   2019   unity   нейросети   с#

LeoECS 2.0

Там Leopotam обновляет свой ECS — один из самых быстрых, легких, «памятинежрущих» ECS для Unity и вообще C#.

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

Теперь нет отложенных операций, всё применяется сразу, есть автоинжект фильтров и «мира», переделано API, но обратная совместимость для перехода осталась. Создавать сущности и добавлять компоненты теперь удобней и понятней.

Пока в dev-ветке, но релиз скоро.
Чатик на gitter.im
Discord канал

 Нет комментариев    1479   2019   ecs   unity   с#

Unity и DeltaDNA

Собственно, новость уже не новость, зачем Unity нужна была DeltaDNA — понятно. Их Unity Analytics такая себе поделка, все всё равно используют сторонние сервисы. А тут неплохой инструмент. Вопрос, насколько глубоко он будет интегрирован во внутренние системы Unity Cloud и будет ли вообще.

В блоге пишут, что будут использовать LiveOps функции, и что DeltaDNA останется доступна для других движков. По поводу всего остального — не понятно.

Из отечественных продуктов мне нравится devtodev. Пока не удалось в полной мере протестировать, но на следующий проект хочу подключить её.

Как делать шрифты для TextMeshPro

TextMeshPro уже давно часть Unity и его можно бесплатно установить через пакетный менеджер. Не буду описывать все преимущества перед старым текстовым компонентом, это примерно как, сравнивать Блокнот и Word.

Шрифт который используется по-умолчанию поддерживает основные символы, но он обычный/скучный/дефолтный, примерно как китовый объектив у фотоаппарата :) Чтобы добавить в свою игру новый красивый/необычный/яркий шрифт, надо проделать все пару операций.

TMP Font Creator

TMP Font Creator

TMP Font Creator

Итак, что необходимо:

  • Сам шрифт TTF (OTF), не забывайте про лицензию ☝️
  • Unity с установленным TMP
  • Набор символов или unicode range, который будете использовать
  • Надо понимать, что во многих шрифтах может не быть необходимых символов
  • У Google есть бесплатные Noto Fonts которые тоже немного скучные, но поддерживают все языки :)
  1. Добавляете файл шрифта в проект, открываете TMP Font Asset Creator и перетаскиваете его в поле Source Font File
  2. Теперь можно выбрать набор символов, для этого есть меню Character Set:

Select character set type for TMP

Select character set type for TMP

Select character set type for TMP
Всё что идёт до Custom Range — понятно, это разновидности ASCII и символы. После это опции где можно выбирать откуда брать символы: из файла, просто перечислить в поле, указать промежуток, последовательность и т. д.
  1. Выберем Unicode Range (HEX) и укажем, например 0020-007F — это базовые латинские символы, ренжи можно указывать через запятую
  2. Теперь можно нажать Generate Font Asset

Окно после настроек и генерации шрифта, должно выглядеть как-то так:

Complete font generation for TMP

Complete font generation for TMP

Complete font generation for TMP
  • Из указанного ренжа было добавлено 95 из 96 символов, не добавился 007F — ␡, его нет в этом шрифте.
  • В результате, для атласа 512×512 получился Point Size = 69, потому что в настройках было указано Auto Sizing.
  • Можно указать размер шрифта вручную, но тогда надо следить чтобы все влезли в атлас и при необходимости увеличить размер атласа.
  • Также, можно разбить свои шрифты на несколько ассетов, например, сделать один (базовый) с часто используемыми символами, второй с математическими знаками, третий с армянским языком. И при необходимости TMP сам будет использовать нужный атлас. Для этого к базовому ассету нужно добавить поддержку остальных:

TMP fallback view

TMP fallback view

TMP fallback view

Как сделать поддержку Emoji в Unity, я уже писал. Ещё недавно на форуме один товарищ опубликовал свое решение проблемы с модификаторами в эмоджи. Напомню, что до сих не работают модификаторы, т. е. если вы сделаете атлас с эмоджи, то всякие флаги, цвет кожи и т. п. будут отображаться некорректно. Автор TMP обещал всё это допилить к версии 2019.3, но пока этого нет. Вариант с форума работает правильно.

Разные unicode ranges для создания своих шрифтов можно подглядеть тут.

Новые штуки в Unity 2020.x

Недавно прошла конференция Unite и там представили роадмап по следующим версиям и функциям Unity. Презентация в PDF по ссылке тут, а запись трансляции ниже:

Кроме того, что снова добавят/улучшат/поломают/перепишут свой ECS и все data-oriented штуки, были и другие интересные вещи связанные с редактором, например, Device Simulator:

Это новое окно, где будут готовые пресеты девайсов, можно быстро симулировать разрешения экранов, менять ориентацию во время игры, выводить информации об устройстве, отображать сейф-зоны, вырезы, чёлки, капли и прочее. Его добавят уже в 2019.3.

Много чего было анонсировано, особенно кому интересен DOTS, поэтому лучше посмотреть трансляцию.

В Unity 2020.x UI Elements станут одним инструментом для создания UI, как для редактора, так и для рантайма. Теперь для кнопок внутри игры можно будет писать стили на псевдо-CSS и описывать элементы в UXML. Плюс к этому добавят UI Builder, чтобы можно было мышкой перетаскивать компоненты, виджеты и вот это вот всё. Как это будет в плане производительности — пока не понятно.

Также подвезут Visual Scripting для DOTS, который все время откладывают (снова Experimental ха-ха) и который все почему-то очень ждут... ¯\_(ツ)_/¯

LWRP превратится в URP с вроде как улучшенными и переписанными пост-эффектами и поддержкой VFX Graph. А для HDRP будет рейтрейсинг, правда пока preview.

А ещё недавно добавили поддержку Apple Sign in, вместе с iOS 13. Если у вас в приложении или игре есть авторизация через соцсети, то должна быть возможность и через Apple Sign in (это требование Apple). Как это сделать и где взять нужный плагин, написано в блоге Unity.

Уведомления в Unity

Юнитеки всё никак не могут сделать нормальный плагин для управления уведомлениями :( Вот и сейчас, вроде что-то новое и вроде даже удобное, но нет возможности принимать push сообщения с сервера. Почему? Это же фича которая используется почти во всех онлайн играх.

Так и придётся пока использовать нативные самописные плагины, печаль...

Исходники примера

 Нет комментариев    796   2019   android   ios   plugin   unity   с#   уроки

Crop и scale текстур в Unity

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

Демка и исходники на Github.

Ссылка на Github

Ранее Ctrl + ↓