#mopsicus

об играх, разработке на Unity и личном опыте

Buffer icon Проекты

Создание плагинов для Unity

Плагины для Unity

Плагины для Unity

Пишу статью про создание плагинов для Unity под iOS и Android. Нужны комменты и советы.

За несколько лет, я сделал большое количество различных плагинов. Многие они не в паблике и опенсорс, но это не надолго (надеюсь :).

Есть куча ситуаций когда одной Unity недостаточно и нужно использовать возможности платформы. Банально, но до сих пор, в Unity нет работы с галерей и камерой из коробки :) Смешно? Не очень. В Xamarin есть, а в Unity нет.

Для многих менее опытных разработчиков, создание плагина для Unity под мобильную платформу кажется чем-то сложным, но на деле, это не так сложно и страшно. По крайней мере, организовать простое взаимодействие — достаточно просто. В статье, будет шаблон для Android (на Java) и iOS (на Obj-C) для создания плагинов и их связи с Unity приложением.

Поэтому вопрос: о создании каких плагинов вы бы хотели прочитать в первую очередь? Примеры: галерея, уведомления, браузер, покупки, шаринг, [продолжите]...

Ноябрьский выпуск рассылки Unity #11

VSCode Stories

VSCode Stories

В этом выпуске:

  • как заработать на Unity Asset Store
  • публикация игры в AppGallery
  • динамический лут в играх
  • новый курс у dev2dev
  • и ещё 26 заметок, ссылок, исходников и видео

Читать последний выпуск 📩

Предыдущие выпуски: 1 2 3 4 5 6 7 8 9 10

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

Apple уменьшит комиссию до 15%

Apple small business programm

Apple small business programm

Начиная со следующего года, разработчики заработавшие меньше $1 млн. смогут рассчитывать на снижение комиссии с 30% до 15%! И это вроде как не фиксированная система, т. е. если заработок снова превысит порог, то и комиссия увеличится, обратно это тоже работает.

Считаю, что это успех, друзья! Связано ли это с антимонопольными разбирательствами или давлением Epic Games с коалицией — неважно, для небольших разработчиков это то что нужно, а их больше 90%.

Возможно и Google вскоре подсуетится, кто знает...

Анонс от Apple

 1 комментарий    64   9 дн   apple   ios   mac   игры   ссылки

Unity EventBus на интерфейсах

public class SaveLoadManager : Monobehaviour, IQiuckSaveHandler
{
    private void OnEnable()
    {
        EventBus.Subscribe(this);
    }

    private void OnDisable()
    {
        EventBus.Unsubscribe(this);
    }

    private void HandleQuickSave()
    {
        // код сохранения
        ...
    }
}

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

Пароль от SSH ключа

Забыл пароль от SSH ключа. И такое бывает...

Уже думал, что сейчас сделаю новый и потом буду обновлять ключ на всех серверах, на Github и прочих сайтах. Но, как оказалось в MacOS есть возможность посмотреть пароль.

  1. Открываете «Связку ключей»
  2. Ищите свой ключ (id_rsa или любой другой)
  3. Вводите пароль пользователя (скорее всего пользователь должен быть админом)
  4. Всё!
 Нет комментариев    106   21 д   mac

Unity & iOS capabilities

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 — непонятно.

Рассылка по Unity и играм #10

Принципы геймдизайна

Принципы геймдизайна

В новом выпуске:

  • новый курс для инди
  • принципы геймдизайна
  • Godot
  • новые требования Apple
  • Unity Open Projects
  • и ещё 18 заметок

Читать последний выпуск 📩

Выпуск №9 📩
Выпуск №8 📩
Выпуск №7 📩
Выпуск №6 📩
Выпуск №5 📩
Выпуск №4 📩
Выпуск №3 📩
Выпуск №2 📩
Выпуск №1 📩

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

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

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

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

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

Как освободить место на MacOS

Cleanup MacOS

Cleanup MacOS

Я уже как-то писал, как освободил кучу места на маке, почистив кеш Xcode. Есть даже специальная программа DevCleaner for Xcode, чтобы не ковыряться по папкам вручную, ей то я и пользуюсь теперь.

Как бы не хвалили MacOS, в сравнении с Windows, но система засирается также, как и ОС от Microsoft.

Но, время шло, а место на диске по чуть-чуть уменьшается и уменьшается. Даже не смотря на то, что я чистил кеш Xcode, логи и прочее. В какой-то момент, раздел Другое стал занимать больше 200 ГБ! Погуглил. Рекомендовали, запуститься в безопасном режиме и перезагрузить 🤷‍♂️. Да, это вообще не помогло, освободилось может пару сотен мегабайт. Скачал MacCleaner и посмотрел, что же там такого...

  1. Удалил кеши от старых программ в ~/Library/Caches (почему мак их не чистит сам — хз)
  2. Удалил папки от неиспользуемых программ в ~/Library/Application Support
  3. Удалил сам Xcode и папки, которые к нему относились
  4. Ещё мелочи всякие

Сколько читал и видел этой навязчивой рекламы MacCleaner, почти все писали, что это мусорный апп и т. п. Не знаю, первый раз запускал, но пользу он принёс.

Освободилось немного, но всё равно, раздел Другое был огромным. Потом, я запустил Disk Expert от того же MacCleaner и пошёл искать ещё. И в системных! папках было две, по 35 ГБ каждая: com.apple.Developer и com.apple.AppStore. Погуглил про них, я был не одинок :) Там были какие-то кеши старых приложений, Xcode опять же, и очень много другого. Удалил всё из них.

Потом ещё запускал App Cleaner & Uninstaller, этот апп, как я понял, как раз и занимается тем, что удаляет приложение и все его кеши, службы, временные папки, логи и т. д. Короче, то что в Windows делает Uninstall. Поэтому, заявление что в MacOS достаточно удалить программу из папки «Программы» — враньё. Не работает это так.

В итоге: перезагрузился, всё работает, +90 ГБ свободного места.

UPD: ещё есть апп OmniDiskSweeper, простой, но сразу видно где большие файлы и папки, рекомендую.

 Нет комментариев    290   1 мес   apple   mac

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

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

Ранее Ctrl + ↓