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

разработка

Позднее Ctrl + ↑

Unity & iOS capabilities

iOS capabilities list

iOS capabilities list

iOS capabilities list

Как оказалось, даже для последних версий Unity, есть проблема программно выставить нужные параметры в Xcode проекте :( А это необходимость, иначе никакой CI\CD не работает и придётся билдить iOS версию вручную, что конечно не очень правильно.

Для этих целей в Unity есть специальный PostProcessBuildAttribute и PBXProject. После билда в Xcode проект, можно настраивать уже другие параметры, не доступные внутри Unity. Но, даже следуя мануалам, как-то оно не всё работает...

Так, например, чтобы добавить функцию Sign in with Apple, нужно воспользоваться ProjectCapabilityManager. В коде это выглядит примерно так:

...
string projectPath = string.Format ("{0}/Unity-iPhone.xcodeproj/project.pbxproj", path);
PBXProject project = new PBXProject ();
string file = File.ReadAllText (projectPath);
project.ReadFromString (file);
string target = project.GetUnityMainTargetGuid ();
string entFile = "game.entitlements";
ProjectCapabilityManager manager = new ProjectCapabilityManager (projectPath, entFile, "Unity-iPhone", target);
manager.AddSignInWithApple ();
// other capabilities
manager.WriteToFile ();

Но таким образом файл X.entitlements не добавляется в проект, создаётся, но не добавляется. И через project.AddFile() — тоже. Спасает как всегда stackoverflow :) Оказывается, помимо project.AddFile() надо добавить ещё специальный property, чтобы всё закрутилось:

...
project.AddFile (entFile, entFile);
project.AddBuildProperty (target, "CODE_SIGN_ENTITLEMENTS", entFile);
File.WriteAllText (projectPath, project.WriteToString ());

Почему это не написано в мануале Unity — непонятно.

 Нет комментариев    865   2020   ios   unity   разработка   с#

Кастомные шрифты в UnityMobileInput

Обновил плагин UnityMobileInput.

Теперь можно использовать свои шрифты в нативном поле ввода. Просто копируете TTF шрифт в проект, в папку StreamingAssets, дальше плагин всё сделает сам: скопирует в папку приложения на Android или iOS и применит для нужного поля ввода.

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

 3 комментария    1351   2020   android   ios   unity   ассеты   проекты   разработка
 Нет комментариев    1814   2020   unity   игры   разработка   с#

Sign in with Apple, Google Sign-In и Unity

Sign in with Apple and Unity

Sign in with Apple and Unity

Sign in with Apple and Unity

Решили мы сделать «доброе» дело нашим пользователям: позволить и на Android и на iOS использовать Google Sign-In и Sign in with Apple, и там и там.

Пришлось немного поковыряться, но получилось! Плагин для Unity работает. Разобраться во всём помогли две статьи:

Плагин из примера на Kotlin, переписал на Java, так привычней, но наверное, уже пора осваивать и его... :( Apple не сделали SDK для других платформ, так что там всё не красиво, но работает. У Google, прописываешь в pod файл Google Sign-in и используешь.

В общем, mission complete. Если есть вопросы, пишите.

 4 комментария    1921   2020   android   apple   ios   plugin   unity   разработка

Градиентный текст в Unity

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

Градиент для каждой буквы

Градиент для каждой буквы

Градиент для каждой буквы

Пришлось написать небольшой скрипт, который вешается на текстовый компонент, берёт цвета градиента из свойств и применяет его для всего текста. Стало выглядеть так:

Градиент для всего текста

Градиент для всего текста

Градиент для всего текста

Принцип простой: разбиваем градиент для количество букв и потом по порядку применяем для каждой буквы свой диапазон.

Исходник

Теперь будет гуглится по full text gradient unity :)

 Нет комментариев    1906   2020   unity   интерфейс   разработка   с#

TabsView для Unity

Сегодня у нас раздел «Велосипедостроение» :)

Если DOTween в проекте не используется, можно его выпилить и сделать вручную, чтобы не тащить библиотеку.

Когда-то давно понадобилось сделать в UI горизонтальную прокрутку табами. В iOS есть такой стандартный элемент. В Android по-моему тоже. Для Unity как известно стандартные UI компоненты довольно скудны. Поэтому каждый придумывает себе, по мере надобности. Вот и получилось когда-то такое, довольно простое решение.

  • Управляется свайпами
  • Есть индикаторы состояния табов
  • Анимации можно делать любые, с помощью DOTween
  • На переключение таба можно повесить хук

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

 1 комментарий    672   2020   git   unity   разработка   с#

Trello для gamedev

Trello — удивительный сервис, при всей свой простоте, в нём можно вести практически любые процессы, например, процесс разработки игры.

Trello board kanban gamedev

Trello board kanban gamedev

Trello board kanban gamedev

У меня есть как рабочие доски, так и личные, где я веду проект в одного, как например доска на превью. Это достаточная простая доска: есть бэклог, куда скидываю все подряд, задачи, мысли, какие-то замечания, ссылки, баги и т. д. Ну а дальше, карточка начинает свой путь по столбцам: to do, doing (progress), need test, done (complete), future, canceled. Для меня стал удобен такой набор столбцов, но это всё индивидуально.

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

Trello plugins

Trello plugins

Trello plugins

Также, к каждой доске можно подключить дополнительные сервисы для автоматизации, аналитики и прочее. Я пользовался такими расширениями:

  • Сountdown
  • Voting
  • Board Export

И всё это бесплатно. Платные расширения конечно есть, как и «Gold» тариф, который снимает некоторые ограничения и добавляет расширенные функции автоматизации.

Что ещё можно попробовать для управления процессом разработки?

https://hacknplan.com
Заточенный именно под gamedev сервис: канбан доски, ведение ГД и прочее.

https://basecamp.com
Стал бесплатным для персонального использования.

https://asana.com
Старый, но годный сервис от чувака из Фейсбука.

https://notion.so
Уже писал про него. Не смог туда перелезть в итоге :( Хотя внешне нравится.

https://www.openproject.org
Упомянул про этот сервис в рассылке. Попробую поставить на свой сервер и посмотреть, как оно работает.

 Нет комментариев    2126   2020   инструменты   разработка

Свой CI/CD для Unity

Mopsicus CI/CD bash script

Mopsicus CI/CD bash script

Mopsicus CI/CD bash script

Написал небольшую статью на Хабр про скрипт который получился в результате автоматизации сборки Unity проектов под Android и iOS. Раньше большинство операций делалось вручную, теперь всё сведено к минимуму.

Один запуск скрипта и:

  • скачиваются последние изменения с GIT
  • запускаются тесты
  • собирается APK для Android, в develop или release
  • собирается для iOS Xcode проект, в develop или release
  • компилируется
  • архивируется и экспортируется в IPA
  • генерируется манифест для него
  • генерируются HTML страницы для установки
  • всё это загружается на сервер с помощью sshpass
  • все логи записываются в отдельную папку
  • отсылается уведомление в Телеграмм, что всё готово

Вот такая интеграция и доставка :)

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

 1 комментарий    1213   2019   android   git   ios   unity   инструменты   разработка   терминал

Рассылка по Unity

Mopsicus Newsletter subscribe

Mopsicus Newsletter subscribe

Mopsicus Newsletter subscribe

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

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

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

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

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

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

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

 Нет комментариев    803   2019   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());

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

 Нет комментариев    427   2019   android   plugin   unity   разработка
Ранее Ctrl + ↓