Когда Unity импортирует ресурсы, она также сохраняет и управляет дополнительными данными об этом ресурсе, например, какие настройки импорта Unity должна использовать для импорта ресурса и где этот ресурс используется в вашем проекте. Ниже приведено описание того, как работает этот процесс:
- Unity присваивает объекту уникальный идентификатор.
- Unity создает файл
.meta
, сопровождающий файл ресурса. - Unity обрабатывает ресурс.
Настройки импорта для любого ресурса влияют на то, как Unity обрабатывает этот ресурс. Если вы измените файл ассета или любые настройки импорта ассета, Unity повторно импортирует ассет. Дополнительную информацию см. в разделе Объекты и настройки их импорта.
Уникальные идентификаторы
Редактор Unity часто сверяет содержимое папки Assets
со списком уже известных ему ресурсов. Когда вы помещаете ресурс в папку Assets
, Unity обнаруживает, что вы добавили новый файл.
Когда Unity находит новый файл, он присваивает объекту уникальный идентификатор. Это идентификатор, который Unity использует внутри для ссылки на ресурс, чтобы Unity могла перемещать или переименовывать ресурс, ничего не нарушая.
Идентификаторы обычно не отображаются в редакторе,
Метафайлы
На изображении ниже показаны файлы .meta
, которые Unity создает для каждого элемента в папке Assets
вашего проекта. Unity создает метафайлы для файлов и папок активов.
Эти файлы скрыты в окне проекта Unityокне, которое показывает содержимое вашего Папка Assets
(вкладка Project) Подробнее
См. в Словарь, а также может быть скрыт в вашей файловой системе по умолчанию ( см. Википедия: Скрытый файл и скрытый каталог), поэтому вы можете не увидеть их в Проводнике Windows или Finder. если только вы не сделаете скрытые файлы видимыми на своем компьютере.
В этом примере показано, что Unity создает файл .meta
для каждого ресурса или папки в папке проекта Assets
, поскольку они появляются в браузере системных файлов. Однако эти файлы .meta
не отображаются в окне проекта, поскольку по умолчанию они скрыты. Чтобы сделать их видимыми, откройте параметр проекта Mode и включите Видимые метафайлы.
Когда Unity создает файл .meta
для объекта, он записывает идентификатор объекта в файл .meta
и сохраняет файл .meta
в том же месте, что и файл ресурса.
Файлы .meta
содержат уникальный идентификатор, присвоенный ресурсу, и значения для всех настроек импорта. вы видите в Инспектореокно Unity, в котором отображается информация о текущем выбранном игровом объекте, активе или настройках проекта, что позволяет вам проверять и редактировать значения. Подробнее
Просмотр в окне Словарь при выборе ресурса в Окно проекта. Например, для текстуры это включает Тип текстуры, Режим переноса, Режим фильтра и Уровень Aniso Уровень анизотропной фильтрации (AF) текстуры. Позволяет повысить качество текстуры при просмотре текстуры под крутым углом. Подходит для текстур пола и земли. Подробнее
См. в Словарь.
Если вы измените настройки импорта для ресурса, Unity сохранит эти новые настройки в файле .meta
, который сопровождает ресурс. Затем Unity повторно импортирует ресурс в соответствии с вашими обновленными настройками и обновляет соответствующие импортированные «готовые к игре» данные в папке проекта Library
.
Метафайлы и файлы ресурсов
Важно. Метафайлы содержат важную информацию о том, как актив используется в проекте, и они должны оставаться в файле актива, к которому они относятся. Если вы перемещаете или переименовываете ресурс в собственном окне проекта Unity, Unity также автоматически перемещает или переименовывает соответствующий файл .meta. Однако если вы перемещаете или переименовываете ресурс за пределами Unity (то есть в Проводнике Windows или Finder в macOS), вы должны переместить или переименовать файл .meta, чтобы он соответствовал.
Если ресурс теряет свой метафайл (например, если вы перемещаете или переименовываете ресурс за пределами Unity, но не перемещаете или переименовываете соответствующий файл .meta), любая ссылка на этот ресурс в вашем проекте не работает. В этой ситуации Unity замечает, что у ресурса нет соответствующего метафайла, создает новый для перемещенного/переименованного ресурса, как если бы это был совершенно новый ресурс, и удаляет старый «бесхозный» файл .meta.
Этот процесс может вызвать серьезные проблемы в вашем проекте. Например:
* Если ресурс текстуры теряет свой файл .meta, любые материалы, использующие эту текстуру, теряют свою ссылку на эту текстуру. Чтобы это исправить, вам нужно будет вручную переназначить эту текстуру всем материалам, для которых она требуется.
* Если ресурс сценария теряет свой файл .meta, любой GameObjectsосновной объект в сценах Unity, который может представлять персонажей, реквизит, пейзажи, камеры, путевые точки и многое другое. Функциональность GameObject определяется прикрепленными к нему компонентами. Подробнее
См. в Словарь или ПрефабыТип ресурсов, позволяющий хранить игровой объект с компонентами и свойствами. Префаб действует как шаблон, из которого вы можете создавать новые экземпляры объектов в сцене. Подробнее
Посмотрите в Словарь, что этот скрипт назначен вместо компонента "неназначенный скрипт" , и теряют свою функциональность. Чтобы исправить это, вам нужно будет вручную переназначить этот скрипт для любых игровых объектов, которым он требуется.
Пустые папки, метафайлы и контроль версий
Unity назначает каждой папке в папке Assets
вашего проекта собственный файл .meta
. Однако некоторая система управления версиямидля управления изменениями файлов. Вы можете использовать Unity в сочетании с наиболее распространенными инструментами контроля версий, включая Perforce, Git, Mercurial и PlasticSCM. Дополнительная информация
См. в Словарь системы (VCS) не могут хранить пустые папки. Это означает, что когда вы добавляете или удаляете пустую папку из своего проекта, ваша система контроля версий сохраняет файл .meta
как добавленный или удаленный, но не сохраняет изменение добавления или удаления сама папка, что может сбивать с толку или создавать проблемы.
Чтобы решить эту проблему, Unity ведет себя следующим образом в отношении пустых папок:
Если Unity обнаруживает пустую папку, в которой больше нет соответствующего метафайла, если в этой папке ранее был метафайл, Unity предполагает, что метафайл был удален путем удаления папки другим пользователем в вашей системе контроля версий, и удаляет пустая папка локально.
Если Unity обнаруживает новый метафайл для папки, но эта папка не существует локально, Unity предполагает, что новый метафайл был создан путем добавления папки другим пользователем в системе контроля версий, и создает соответствующую пустую папку. локально.