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

инструменты

Unity и AndroidManifest

Друзья, нас обманывали!

Android Manifest hardwareAccelerated patch

Android Manifest hardwareAccelerated patch

Android Manifest hardwareAccelerated patch
Ещё куча параметров, которые можно установить для Activity

Это такое начало специально, чтобы привлечь внимание :) На самом деле, я просто не знал, что так может быть. Узнал вовремя и хочу поделиться.

Когда вы в своём кастомном андроид манифесте выставляете такую штуку:

<activity android:name="com.xxx.xxx" android:label="@string/app_name" ... android:hardwareAccelerated="true">

И ждёте что будет работать аппаратное ускорение у конкретного активити, то... оно не будет работать. Бум! Т. е. если вы сбилдите apkшку, расковыряете её и посмотрите итоговый манифест, то вместо вашего true будет стоять кое-что другое. Почему так происходит я пока не разобрался, но узнал как исправить.

Оказывается, начиная с 2018 версии в Unity есть такая штука как IPostGenerateGradleAndroidProject. Она вызывается после того как Gradle сделал своё грязное дело и перед непосредственно билдом. Так вот, на этом этапе и можно поменять в манифесте нужные нам параметры. В общем-то, можно добавлять или менять всё что угодно, разрешения, параметры, имена активити и т. д.

Пример на Github

 Нет комментариев    530   2 мес   android   unity   инструменты   разработка

UPM Unity fail [solve?]

В продолжении темы Unity Package Manager’а: недавно тоже столкнулся с проблемой, что при запуске редактора он не мог приконнектиться. Загуглил и оказалось, что это распространённая проблема.

UPM Health Check

UPM Health Check

UPM Health Check
Ошибка на скриншоте не соответствует, но состояние такое же

В основном после диагностики показывает: UPM Health Check (Fail). На оффоруме уже сделали специальный закреп, как это исправить. Я попробовал всё — и ничего не помогло. Просто не подключается. Хотя на соседнем компьютере, все работает нормально, т. е. дело не в сети.

В итоге опытным путём выяснил, что проблема была в VPN клиенте Cloudflare, который https://1.1.1.1. Даже в выключенном состоянии, он как-то блокировал локальные адреса и порты. Удалил и всё сразу заработало. Так что, если вдруг столкнулись с этой проблемой, проверьте свой файрвол и впн клиент, если такие есть.

 Нет комментариев    513   2 мес   mac   unity   инструменты

Как использовать Git Submodules в Unity

И тут сразу возникает вопрос: почему не использовать пакеты и UPM? Это удобно, да и весь механизм уже встроен в Unity?

Но как оказалось, не всегда удаётся выделить какую-то часть приложения в отдельный пакет, чтобы у него было минимум зависимостей и он представлял из себя какую-то самостоятельную единицу. Проекты бывают разные, с различной архитектурой и набором дополнительных ассетов и прочего. А выделить какую-то общую часть (ядро) хочется, чтобы использовать её в других проектах... В общем, если по какой-то причине пакеты вам не подходят — попробуйте Git Submodules.

В чём отличие при работе с сабмодулями гита?
Unity использует скрипты и ассеты которые расположены в папке Assets. Если вы попробуйте подключить сабмодуль и указать путь, например Assets/Core, то ничего не получится, потому что папка Assets уже существует. Поэтому надо провернуть такой финт:

  1. Подключаете сабмодуль к проекту (как это сделать, тут описывать не буду, потому что есть разные клиенты SourceTree, Fork, GitKraken, просто консоль)
  2. В качестве директории можно указать Modules/your_module
  3. Переходите в папку Assets
  4. Устанавливаете симлинк (symlink) на новый сабмодуль. Всё! Он у вас в проекте, можно пользоваться.
cd Assets
ln -s ../Modules/Core Core

Выглядеть это будет примерно так:

Unity Git submodules

Unity Git submodules

Unity Git submodules

Теперь если в подключаемых сабмодулях, что-то меняется, надо просто спуллить обновления. В общем, кто привык работать с Git, то всё достаточно привычно и понятно.

 Нет комментариев    993   2 мес   git   unity   инструменты   разработка

MoDI

MoDI. Lightweight IoC container for Unity.

MoDI. Lightweight IoC container for Unity.

MoDI. Lightweight IoC container for Unity.

MoDI — простой контейнер для внедрения зависимостей в Unity.

Когда я хочу в чём-то разобраться, я почти сразу перехожу к практической части. Если со старта не получается, тогда начинаю читать мануалы :) После этого, снова повторяю шаг №1 и так по кругу. Иногда это надоедает и я или ищу другие пути решения, или говорю себе, что это «не моё», мне это не надо — сдаюсь короче.

Решил я однажды разобраться как работать с Zenject и Ninject в Unity. Сделал несколько тестовых проектов — вроде работает. Начал копать дальше, понял принцип и решил, что хочу своё такое же, но попроще :) И чтобы было достаточно для всех моих разработческих потребностей. Так появился MoDI.

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

Это можно сказать и про ECS, да Leopotam? :)

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

Простейший пример выглядит так:

using MoDI;
using UnityEngine;

public class QuickStart : MonoBehaviour {

    public void Start() {
        DI.Get().Bind<Hello>().WithArguments("Hi, I'm MoDI!");
        Hello hello = DI.Get().Resolve<Hello>();
    }
    
}

public class Hello {

    public Hello(string data) {
        Debug.Log(data);
    }

}

После запуска данного скрипта в консоли появится сообщение: «Hi, I’m MoDI!».

В документации можно найти ещё примеры и описание API.

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

 1 комментарий    2250   7 мес   unity   ассеты   инструменты   разработка   с#

Форматирование С# кода в VS Code

До недавних пор, весь код я форматировал с помощью расширения C# FixFormat. Оно старое, не поддерживается, но работает! И вполне себе работает.

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

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

{
    "FormattingOptions": {
        "newLine": "\n",
        "useTabs": false,
        "tabSize": 4,
        "indentationSize": 4,
        "NewLinesForBracesInTypes": false,
        "NewLinesForBracesInMethods": false,
        "NewLinesForBracesInProperties": false,
        "NewLinesForBracesInAccessors": false,
        "NewLinesForBracesInAnonymousMethods": false,
        "NewLinesForBracesInControlBlocks": false,
        "NewLinesForBracesInAnonymousTypes": false,
        "NewLinesForBracesInObjectCollectionArrayInitializers": false,
        "NewLinesForBracesInLambdaExpressionBody": false,
        "NewLineForElse": false,
        "NewLineForCatch": false,
        "NewLineForFinally": false,
        "NewLineForMembersInObjectInit": false,
        "NewLineForMembersInAnonymousTypes": false,
        "NewLineForClausesInQuery": false
    }
}

Также, не забудьте поставить в настройках VS Code:

  • Csharp → Format → true
  • Editor → Default formatter → ms-dotnettools.csharp

Для форматирования при вводе и сохранении:

  • Editor → Format On Type → true
  • Editor → Format On Save → true

И как бонус: OmniSharp также научился ставить XML комментарии, так что, минус ещё одно расширение. Просто вводите три слеша над методом и шаблон XML коммента готов.

 Нет комментариев    3683   10 мес   unity   инструменты   расширение   с#

Топ-10 ошибок в оптимизации Unity

Хороший вебинар от юнитеков, рассмотрены частые ошибки совершаемые при оптимизиции, обзор инструментов по оптимизации, примеры с пояснениями. Рекомендую.

 Нет комментариев    694   2020   unity   видео   графика   игры   инструменты

Free VPN

Отличный бесплатный VPN от Cloudflare. На любую платформу, быстро и удобно, рекомендую.

FreeVPN

FreeVPN

FreeVPN

https://1.1.1.1/beta/

 Нет комментариев    734   2020   android   ios   mac   инструменты

Рассылка #7

Рассылка по Unity #7

Рассылка по Unity #7

Рассылка по Unity #7

Совсем забыл сказать, что седьмой выпуск рассылки, читать у себя в почте или по ссылке ниже. А также, Unity сделала Bolt доступным для всех тарифных планов.

Читать последний выпуск 📩
Читать выпуск №6 📩
Читать выпуск №5 📩
Читать выпуск №4 📩
Читать выпуск №3 📩
Читать выпуск №2 📩
Читать выпуск №1 📩

→→ Подписаться ←←

 Нет комментариев    624   2020   инструменты   рассылка

Установка сразу на несколько Android устройств

При тестировании приложений часто приходится переустанавливать приложение, это очевидно. Когда я делал для себя мини CI\CD, то там уведомление с ссылкой на APK или IPA, приходило в телеграм. Это удобно, когда на девайсах уже всё настроено и есть доступ к телеге. Скачал и установил.

Но есть у меня и много девайсов на Android, которые периодически сбрасываются до заводских настроек. Каждый раз устанавливать и настраивать телеграм на каждом — как-то утомительно. Поэтому, я написал небольшой баш-скрипт который устанавливает/удаляет приложение сразу со всех подключенных андроид устройств. Было б нужное количество портов и проводов :)

Console APK install tool

Console APK install tool

Console APK install tool

Если необходимо, то эти функции можно добавить и в прошлый скрипт для CI\CD, если не нужно закачивать APK на сервер и отправлять уведомление.

Исходник на Github

 Нет комментариев    187   2020   android   git   инструменты   терминал

Релиз Unity 2019.3

Как известно, после релиза Unity, надо подождать пару месяцев, чтобы всё «устряслось» и вышло несколько багфисков :) Поэтому, рабочие проекты пока бы не советовал переводить на новую версию, но поиграться и посмотреть что добавили, стоит.

Пресеты

Пресеты позволяют кастомизировать любую сущность в Unity и потом использовать её с уже настроенными свойствами. Например, вам нужно создать несколько разных объектов/префабов с компонентом Rigidbody, для которых вы каждый раз будете настраивать массу и ещё какие-то свойства. Теперь можно сохранить Rigidbody в пресет и использовать. Работает drag-and-drop и есть API.

Unity presets feature

Unity presets feature

Unity presets feature

Сторонние материалы

Теперь можно использовать материалы сделанные в других программах. Пока поддерживаются: Autodesk Arnold Standard Surface shader, Autodesk 3ds Max physical material и Autodesk Interactive shader. Но в будущем список скорее всего будет расширен.

Работа с 2D

Куча обновлений для работы с 2D проектами:

Про Data-Oriented Technology Stack (DOTS) ничего не пишу, потому что он мне пока не интересен, но там тоже много нового и в итоге, Unity всё переведёт на него и откажется от старой идеологии.

  • 2D PSD Importer — позволяет импортировать файлы Photoshop сразу в Unity, сохраняя информацию о спрайтах и слоях, что особенно актуально если вы будет использовать пакет 2D Animation.
  • 2D Animation — предоставляет все инструменты для создания скелетной анимации прямо в Sprite Editor (создание костей, риг, и т. д.)
  • 2D Tilemap Editor — позволяет быстро создавать квардратные, шестиугольные (hex) и изометрические тайлмапы.
  • 2D Sprite Shape — поможет создавать красивые 2D-ландшафты и объекты с помощью кривых.
  • 2D Pixel Perfect — гарантирует, что ваша пиксельная графика останется чёткой и стабильной в движении при различных разрешениях, а Cinemachine теперь включает расширение виртуальной камеры Pixel Perfect для улучшения совместимости с пакетом.
  • 2D Lights и 2D Shadows — включены в Universal Render Pipeline, как чaсть 2D Renderer.

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

2D spline

2D spline

2D spline

Штуки для программеров

  • SerializeReference — новый атрибут позволяет сериализовать классы C# как ссылки, а не как типы значений.
  • Обновили физический движок с v3.4 до v4.1 — улучшенный MeshCollider и Cloth.
  • Настраиваемый Play Mode — сейчас перед запуском, скрипты и сцена перезагружаются, что может отнимать время, если скриптов много, а сцена «тяжелая». Теперь, можно настроить Play Mode так, чтобы сцена или скрипты не перезагружались, если они например не менялись. Это позволит сэкономить 50-90% времени, как пишут.
  • Улучшили профайлер — теперь можно настраивать отображаемое количество фреймов. А ещё, теперь можно смотреть стек вызовов которые выделяют память. Это классно, можно найти критичные места.

Profile allocation manager

Profile allocation manager

Profile allocation manager

Редактор

  • Новый Editor UI — всё плоское, иконки, шрифты, производительность, поддержка высоких разрешений.
  • Быстрый поиск — Alt + ’ для поиска по файлам, префабам, настройкам и объектам на сцене.
  • UIElements и UI Builder — новая концепция построения интерфейсов, я бы не торопился её использовать, пока нет отзывов о багах и производительности новой системы. Но я думаю, что там всё грустно.

Остальное

 Нет комментариев    704   2020   unity   инструменты
Ранее Ctrl + ↓