TGViewer
Game Development | YeaHub Game Development | YeaHub @yeahub_game_dev · 370 subscribers
Post #434 163
asmdef в Unity - что это и зачем они вообще нужны

Что такое сборка?

Если открыть любой Unity-проект и начать писать код, вы уже работаете со сборками, просто неявно.

Наверняка в IDE вы видели кучу сборок:

• Assembly-CSharp
• Assembly-CSharp-Editor
• Zenject
• Zenject-Editor

Это сборки, которые Unity создаёт самостоятельно. Часть из них есть в любом проекте, часть добавляется вместе с добавленными плагинами и пакетами.

Создание asmdef в Unity - это способ создать такую сборку вручную самостоятельно.
Своя DLL внутри проекта, со своими зависимостями, границами и правилами доступа.

Зачем вообще создавать asmdef?

1. Улучшение архитектуры

Без создания сборок весь ваш код хранится в одной большой стандартной сборке.
Но на самом деле в любом проекте есть отдельные логические модули.
Говоря о матч-3 проекте - есть модуль обработок платежей, UI модуль, Gameplay модуль, Core модуль, модуль Unit тестов, модуль инфраструктуры проекта (конфиги, сохранения)

Храня всё в одной сборке - легко нарушить эти разделения. Например, модуль обработки платежей может использовать Match3 модуль.
Хотя, если подумать - зачем ему это?

Используя asmdef ты начинаешь явно описывать зависимости:

• UI знает про Core
• Gameplay знает про Core
• Core ни про кого не знает

В итоге:

• Код становится менее связным
• Модуль реально можно вынести в другой проект
• Появляется ощущение «архитектуры», понимания проекта, а не свалки скриптов

2. Улучшение работы редактора

Без asmdef: изменил любой .cs файл → Unity перекомпилирует весь проект
С asmdef: изменил файл → перекомпилируется только сборка, в которой он лежит

В больших проектах это ощущается особенно сильно. Загрузки редактора будут раздражать намного меньше.

Как создать asmdef?

ПКМ в Project → Window Create → Assembly Definition

Далее необходимо его настроить. В Inspector укажи зависимости на другие сборки.
Для UI - на TextMeshPro. Для Core - на UniTask. Для Gameplay - на Core.

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

Наставление

asmdef - это сложно.

Ты почти гарантированно столкнёшься с:

• циклическими зависимостями
• ситуациями «почему этот класс теперь не виден»
• болью при рефакторинге
• ощущением, что раньше было проще

Но именно через это:

• приходит понимание архитектуры
• появляется мышление модулями
• происходит переход от «просто пишу код» к осознанной разработке

И это поможет тебе вырасти в Senior разработчика.

Заключение

asmdef - это не серебряная пуля. Не обязательны для маленьких прототипов, не надо пихать везде.

Но если проект живёт больше пары месяцев и ты хочешь, чтобы он не развалился - рано или поздно asmdef дадут большие бенефиты.

И лучше начать использовать их рано и осознанно.

🚀 Пост Guru Unity: @Minerope
  • 🔥 2
More from @yeahub_game_dev
  1. Oct 9, 2026#video #unity 📚 FREE Complete Unity Game Development Courses Полный бесплатный курс по ра…
  2. Oct 8, 2026#Собес #lost #update 🤔 Что такое lost update и при каких условиях он возникает? 💬 Кратко…
  3. Oct 7, 2026#Собес #Task #ThreadPool #async 🤔 Как Task использует ThreadPool? 💬 Кратко: Task использ…
  4. Oct 5, 2026#Собес #memory_layout #data_alignment #padding 🤔 Какие есть исключения из правил хранения…
  5. Oct 2, 2026#tool #гит 📚 Хочешь изучить Git, не рискуя своей локальной установкой? Теперь можно запус…
  6. Oct 1, 2026#Собес #docker_rm #container #stop 🤔 Как удалить Docker-контейнер? 💬 Кратко: Чтобы удали…
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 →