TGViewer
Unity Architect: архитектура unity проектов Unity Architect: архитектура unity проектов @uniarchitect · 5.23K subscribers
Post #43 2.64K
СТРУКТУРА СБОРОК

Сборки (Assembly definition, asmdef) — unity обертка над сборками в .NET.
По факту это json в котором прописана конфигурация .NET Assembly.

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

У себя на проектах я выделяю такие сборки:
🔹 Runtime — клиентский код
🔹 Editor — утилиты редактора
🔹 Tests.PlayMode — интеграционные тесты.
Т.е. тесты, для которых требуется unity scripts lifecycle
🔹 Tests.EditorMode — unit тесты

Для онлайн приложений так же выделяю:
🔹 Transport — cпецифичная для клиента связь с сервером. Реализация подключения, обмена данными, переключение состояний
🔹 Shared — общие с бэком модели данных, константы, конфиги и прочее.

Т.е. эти сборки является моделью домена и явно отделяют отображение unity (слой Presentation) от источника данных (слой Data Source)
Что-то на архитектурном, будет отдельный пост про это
Выделение этих частей позволяет mock'ать клиентскую часть и запускать клиент без unity т.е. должны стоять галки No Engine References

Из интересного:
▫️ В define constrains поддерживает отрицание. Т.е. можно выключить всю сборку для PROD define’ов
▫️MonoBehavior нельзя добавить как компонент на объект если в Platforms отмечен только Editor
Чтобы это обойти, поставьте галку на любую платформу, под которую 100% проект никогда не будет собран (Stadia например)
▫️ Для удобства редактирования и отслеживания изменений в git, уберите галку Use GUIDs
▫️ csc.rsp можно положить рядом с asmdef и прописать туда дополнительные параметры компиляции
Удобно когда нужно подключить большой список define’ов или отключить надоедливые warning’и
▫️Можно делать точеные оптимизации или патчи IL кода через Mono.Cecil или Harmony. Так раньше был сделан inject в VContainer
▫️Если сборка не изменилась, то перекомпилироваться она не будет. Таким образом, разбивая крупные сборки на более мелкие, можно значительно снизить время компиляции проекта. Из комментов, спасибо @Bogotoff.

А какие сборки вы выделяете в своих проектах?
👨‍💻 в комменты, я создал

#проект_с_нуля@UniArchitect
  • 👍 13
  • 🍌 1
More from @uniarchitect
  1. Jul 24, 2026Post #199
  2. Jul 12, 2026AI НЕ ДЕЛАЕТ ВАС ПРОДУКТИВНЕЕ Незыблемый факт: AI уже очень хорош в маленьких задачах. Нап…
  3. Jul 9, 2026Post #196
  4. Jul 7, 2026UNITY BUILD PIPELINE ПО КИРПИЧИКАМ Полгода назад я решил попробовать активность в блоге, г…
  5. Jul 4, 2026ПРОКЛЯТИЕ ПЕРЕИСПОЛЬЗУЕМОСТИ Делюсь болью. Я последние 5 лет на разных уровнях у разработч…
  6. Jun 29, 2026AI КАК РЕДАКТОР, А НЕ АВТОР Это вторая статья из серии про AI. Первая тут. Когда я запуска…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →