Unity meta файлы что это
каковы наилучшие методы использования Git управление версиями с Unity 3D, особенно в отношении двоичной природы проектов Unity 3D? Пожалуйста, опишите рабочий процесс, какие пути будут включены .gitignore, какие настройки должны быть установлены в Unity и / или проекте, и любые другие специальные вещи, которые следует отметить.
ниже приводится выдержка из мой личный блог .
использование Git с 3D-играми
Обновление Октября 2015: GitHub с тех пор выпустил плагин для Git под названием Git LFS это напрямую связано с приведенной ниже проблемой. Теперь вы можете легко и эффективно версировать большие двоичные файлы!
Git может отлично работать с 3D-играми из коробки. Однако основным предостережением здесь является то, что versioning большие (>5 Мб) медиафайлы могут быть проблемой в долгосрочной перспективе, поскольку ваша история фиксации раздувается. Мы решили эту потенциальную проблему в наши проекты только с версиями с бинарными активами, когда она является окончательной. Наши 3D художники используют в Dropbox для работы на WIP активы, как по причине выше, так и потому, что это много быстрее и проще (не многие художники будут активно хотеть использовать Git!).
Git Workflow
Ваш Git workflow-процесс - это то, что вам нужно решить для себя, учитывая ваш собственный опыт работы в команде и то, как вы работаете вместе. Однако. Я бы настоятельно рекомендовал соответствующим названием Git Flow методология как описано оригинальным автором здесь.
Я не буду вдаваться в слишком большую глубину здесь о том, как работает методология, поскольку автор описывает ее отлично и в нескольких словах, поэтому ее легко пройти. Я использовал с моей командой для некоторое время, и это лучший рабочий процесс, который мы пробовали до сих пор.
Git GUI клиентское приложение
это действительно личное предпочтение здесь, так как есть довольно много вариантов с точки зрения Git GUI или использовать GUI вообще. Но я хотел бы предложить бесплатно приложение SourceTree как он подключается отлично с расширением потока Git. Прочтите учебник SourceTree здесь о внедрении методологии git Flow в их приложение.
Unity3D Игнорировать Папки
для проверки актуальной версии Github поддерживал единство.файл gitignore без специфики ОС.
В Unity3D Параметры
для версий Unity 3D v4.3 и вверх:
- (пропустите этот шаг в v4.5 и выше) включить на Unity → Preferences → Packages → Repository .
- открыть Edit меню и выберите Project Settings → Editor :
- переключатель Version Control Mode для Visible Meta Files .
- переключатель Asset Serialization Mode to Force Text .
хотите перенести существующее РЕПО в LFS?
проверьте мой пост в блоге для шагов о том, как это сделать здесь.
Дополнительные Настройки
одна из немногих основных неприятностей с использованием Git с проектами Unity3D заключается в том, что Git не заботится о каталогах и с радостью оставит пустые каталоги вокруг после удаления файлов из них. В Unity3D сделает *.мета-файлы для этих каталогов и может вызвать битву между членами команды, когда git commits продолжает добавлять и удалять эти мета-файлы.
добавить этот git после слияния крюк до /.git/hooks/ папка для репозиториев с проектами Unity3D в них. После любого git pull / merge он посмотрит, какие файлы были удалены, проверьте, существует ли каталог пустой, и если да, удалите его.
в Unity 4.3 вам также пришлось включить внешнюю опцию из настроек, но поскольку Unity 4.5 они отбросили опцию для этого, поэтому полный процесс настройки выглядит так:
- переключатель Visible Meta Files на Editor → Project Settings → Editor → Version Control Mode
- переключатель Force Text на Editor → Project Settings → Editor → Asset Serialization Mode
- сохранить сцену и проект File меню
также наша команда использует немного более расширенными :
обратите внимание, что только папки нужно держать под управление версиями Assets и ProjectSettings .
более подробную информацию о сохранении Unity Project под контролем источника вы можете найти в этот пост.
что такое GIT?
Git - бесплатная распределенная система управления версиями с открытым исходным кодом ( SCM), разработанная Линусом Торвальдсом в 2005 году (основатель ОС Linux). Он создан для того чтобы контролировать все rom малые к большим проектам с скоростью и эффективностью. Ведущие компании, такие как Google, Facebook, Microsoft, используют git каждый день.
Если вы хотите узнать больше о GIT, проверьте это краткое руководство,
git клиентское приложение Mac / Windows
GitHub-это место, где можно поделиться кодом с друзьями, коллегами, одноклассниками и совершенно незнакомыми людьми. Более пяти миллионов людей используют GitHub для создания удивительных вещей вместе.
в Unity3D параметры
вам нужно сделать эти параметры
переключитесь на видимые мета-файлы в меню Правка → Настройки проекта → редактор → режим управления версиями.
включить внешнюю опцию в Unity → настройки → пакеты → репозиторий
переключиться на принудительный текст в Правка → Настройки проекта → редактор → режим сериализации активов.
чтобы добавить ко всему изложенному, он также идеально подходит для использования git lfs С единства. Я использую это с тех пор, как он вышел, и у него не было никаких проблем.
вы захотите добавить это .gitattributes рядом с вашим .файл gitignore
Это мой список файлов. Если вы используете дополнительные двоичные файлы, а не списки, добавьте их.
Я думал, что могу опубликовать более простой .gitignore для всех, кто заинтересован:
новое расширение Github для Unity приносит рабочий процесс GitHub и многое другое в Unity, обеспечивая поддержку больших файлов с Git LFS и блокировкой файлов.
на момент написания проекта находится в alpha, но по-прежнему используется для личных проектов.
Edit -> Project Settings -> Editor
установите управление версиями в мета-файлы. Установите сериализацию активов в force text.
Я думаю, что это то, что вы хотите.
только активы и ProjectSettings папки должны находиться под управлением версии git.
можно пример такой.
главное, что нужно помнить при использовании git для unity-3d управления версиями исходного кода:
(A)НЕ регистрация в папке библиотеки. Я совершил эту ошибку несколько раз в прошлом и пострадал за это! Удалите или переместите папку библиотеки перед добавлением проекта / файлов в git.
(B) Используйте "Видимые Мета-Файлы" - для новейших версий Unity - 5.3.4 и выше это происходит по умолчанию. Для некоторых из более ранних версии вам нужно изменить настройки в разделе: Изменить - > Настройки Проекта - > Контроль Версий
(D) убедитесь, что .файл gitignore добавляется в репозиторий как первый добавленный файл-потому что в прошлом я лично пропустил добавление .файла.gitignore есть много мыслей в ретроспективе о том, почему это произошло, но в настоящее время я просто копирую и добавляю .файл gitignore в качестве первого шага настройки репозитория.
Так. чтобы сделать проект Unity готовым для git, сделайте следующий:
(1) Перейдите в папку проекта
(3) скопируй .файл гитюдного : На MacOS: cp
/ загрузки/.гитюдного В Windows: копировать c:\Users[yourusername]\загрузки.гитюдного .
(4) git add .gitignore
надеюсь, что это помогает. всего наилучшего!
можно использовать Github для Unity, a Расширение Unity это приводит рабочий процесс git в пользовательский интерфейс Unity.
Github для единства только что выпущена версия 1.0 расширения.
Unity также предоставляет свой собственный контроль версий источника. до unity5 это был сервер unityAsset, но теперь его обесценили. и запустить новую систему управления SVN под названием unity collaborate.но основная проблема с использованием unity и любого SVN-это фиксация и слияние сцены . но не svn дает нам способ решить такого рода конфликты или объединить сцену . поэтому зависите от того, с каким SVN вы знакомы . Я использую инструмент SmartSVN на Mac . и черепаха на окнах .
Я бы предпочел, чтобы вы использовали BitBucket, так как он не является публичным, и есть официальный учебник Unity по Bitbucket.
надеюсь, что это помогает.
просто добавляя в субъект Gitignore. Рекомендуемый способ игнорирует только библиотеку и Temp, если его корень wihtin вашего проекта git. если вы похожи на меня и иногда нуждаетесь в проекте unity, чтобы быть частью РЕПО, а не всего РЕПО, правильные строки в gitignore будут:
Unity предлагает дополнениеAsset Server(Сервер ассетов) для простой встроенной версификации ваших проектов, а также вы можете использовать Perforce и PlasticSCM в роли внешних инструментов (для деталей см. Интеграция управления версиями). Если по каким-то причинам вы не можете использовать эти системы, можно хранить ваш проект в любой другой системе управления версиями, вроде Subversion или Bazaar. Это потребует некоторой начальной настройки вашего проекта.
Перед занесением вашего проекта в систему, вы должны “попросить” Unity слегка модифицировать структуру проекта, чтобы он стал совместим с хранением ассетов во внешней системе управления версиями. Это можно сделать выбрав Edit->Project Settings->Editor в меню приложения и включив поддержку External Version Control (внешний контроль версий), выбрав Visible Meta Files в выпадающем списке Version Control. После этого будут созданы текстовые файлы со всей необходимой Unity информацией для каждого ассета в папке Assets. Эти файлы будут иметь расширение .meta , а их название будет соответствовать полному названию файла ассета, с которым они связаны. Перемещение и переименование ассетов внутри Unity также будет обновлять соответствующие .meta файлы. Однако, если вы перемещаете или переименовываете ассет при помощи внешнего инструмента, убедитесь, что вы также синхронизировали соответствующие .meta файлы.
При занесении проекта в систему управления версиями, вам следует добавить в систему папки Assets и ProjectSettings . Папку Library добавлять не нужно - при использовании файлов .meta, это просто местный кэщ импортированных ассетов.
При создании новых ассетов, убедитесь, что сам ассет и соответствующий ему .meta файл добавились в систему управления версиями.
Пример: Создание нового проекта и импорт его в репозиторий Subversion.
Создайте новый проект в Unity и назовите его InitialUnityProject . Вы можете добавить сюда любые исходные ассеты или сделать это позже.
Включите Visible Meta files в меню Edit->Project Settings->Editor
Закройте Unity (чтобы убедиться, что все файлы точно сохранились).
Удалите каталог Library внутри директории с вашим проектом.
Откройте проект в Unity, запустив его зажав Option или левый Alt . Открытие проекта пересоздаст папку Library , указанную в шаге 4.
Опционально: Установите фильтр игнорирования для неверсифицированой папки Library : svn propedit svn:ignore MyUnityProject/ Subversion откроет текстовый редактор. Добавьте папку Library.
Наконец зафиксируйте изменения. Теперь проект должен быть настроен и готов: svn ci -m"Finishing project import" MyUnityProject
Система контроля версий git уже давно стала стандартом де-факто в мире разработки, но для большинства разработчиков на Unity не секрет, что существует ряд трудностей связанных с особенностями Unity, которые мешают эффективно использовать ее совместно с git.Вот список типичных проблем:
- в репозиторий попадают ненужные файлы или наоборот не попадают нужные
- множество больших файлов раздувает размер репозитория
- проблема с мерджем yaml файлов Unity
- в репозиторий добавлен только сам файл или только meta
- в проекте присутствуют пустые папки
- сложность автоматической нумерации версий и билдов
- неудобство использования кода между несколькими проектами
В этой статье будет описано решение первых трех проблем
Попробуем по шагам расписать методы решения каждой из проблемПервое, что нам нужно будет сделать после создания репозитория для вашего проекта, это настроить исключения, не буду очень подробно на этом останавливаться, вот хороший пример.
Единственное замечание, что скорее всего в конец стоит дописать пару исключений
!*.dll — так как, если вы будете использовать плагины или сторонние ассеты, то dll вам придется хранить в репозитории а в Windows git игнорирует dll по умолчанию;
!*.obj — если используете модели в этом формате, опять же в windows obj файлы могут по умолчанию игнорироватьсяВторым шагом мы попробуем решить проблему роста репозитория от больших файлов. Этим решением является LFS
LFS — это надстройка над git, которая сохраняет в git репозиторий вместо бинарного файла его идентификатор, а сам файл кладет в специальное key-value хранилище.
Таким образом, в самом git репозитории хранится только LFS заглушка файла а сам файл после checkout скачивается из хранилища.
Чтобы настроить lfs типы файлов для нашего репозитори добавим в файл .gitattributes в корне проекта несколько строчек (возможно вам придется его создать, причем Windows может не дать создать файл с таким имеем в Explorer)
здесь перечислены большинство файлов который являются бинарными и могут быть достаточно большого размера. немного поясню:Если в вашем проекте используются еще какие-то большие бинарные файлы, допишите их сюда в дальнейшем поменять тип хранения файла (перенести в lfs или вынести оттуда) будет довольно сложно.
Следующим шагом попробуем немного немного улучшить ситуацию со сложными мерджами.
В составе Unity есть утилита UnityYAMLMerge, которая позволяет эффективно мерджить yaml файлы. Добавим в файл .gitattributes еще несколько строчек:Также необходимо его настроить: добавим следующий код в любой .gitconfig, проще всего в локальный, находящийся по пути .git/config от корня репозитория:
Флаг -p заставляет UnityYamlMerge менять содержимое файлов даже если полностью конфликт разрешить не удалось, и сильно упрощает его дальнейшее решение руками. Например при слияние двух веток где было изменена одна и та же сцена, при использовании стандартного механизма слияния git, мы увидим множество изменений. При использование кастомного драйвера даже если было изменено одно и тоже поле одного и того же компонента, в конфликте будет ровно 1 строчка.Для удобства я создал небольшой скрипт, который позволит провести установку unityyamlmerge автоматически при первом открытие проекта версией Unity. Его можно положить в любое место внутри папки Assets (требует чтобы git был установлен в системе и был прописан в переменной PATH т.е. был доступен по команде git);
Принцип работы: каждый раз, когда Unity запускается или перекомпилирует скрипты, мы проверяем совпадения ключа в EditorPrefs с нашим «актуальным» ключом, если нет(либо поменялась версия нашего скрипта, либо версия Unity, либо это первый запуск) мы через команды git дописываем в локальный gitconfig настройки драйвера.
После выполнения этих шагов настоятельно рекомендую закомитить текущее состояние репозитория.
Каким образом наиболее просто использовать Git при работе с Unity, учитывая, в частности, бинарный характер Unity-проектов? Опишите, пожалуйста, рабочий процесс, укажите, что стоит включить в .gitignore, какие настройки выбирать в Unity и/или проекте и что ещё нужно при этом учесть?
Примечание: я понимаю, что разработчики Unity рекомендуют пользоваться Asset Server, но, по ряду причин, я бы хотел использовать Git, то есть использовать Asset Server – для меня не вариант.
49.5k 72 72 золотых знака 250 250 серебряных знаков 480 480 бронзовых знаковРекомендации ниже являются выдержкой из личного блога.
Использование Git для 3D-игр
Примечание: Не так давно GitHub выпустил плагин для Git под названием Git LFS, позволяющий решить описанную проблему. Теперь вы можете легко и эффективно осуществлять контроль версий для объемных бинарных файлов!
Git прекрасно работает с 3D-играми, за исключением одного: сохранение версий больших (>5 MB) медиафайлов на протяжении длительного времени (при обновлении архивов версий) может быть проблематичным. Эту проблему мы решили в наших проектах фиксацией только тех бинарных файлов, которые считаются окончательными. Наши 3D-художники используют Dropbox для работы с WIP — и по вышеуказанной причине, и потому, что это намного быстрее и проще (не многие художники горят желанием работать с Git!).
Процедура работы с Git
Конкретная процедура работы с Git в большей степени зависит от ваших собственных предпочтений, а также опыта и традиций вашей командной работы. Тем не менее, я бы настоятельно рекомендовал методологию с «говорящим» названием «Git Flow» в оригинальной версии автора.
Я не буду чересчур углубляться в суть методологии, поскольку автор прекрасно её описал – к тому же, без лишней «воды», поэтому в ней нетрудно разобраться. Я уже какое-то время использую этот метод для своей команды и на данный момент это лучшая методология из всех нами испробованных.
Клиентское приложение Git GUI
Это, на самом деле, из области личных предпочтений, поскольку в том, что касается графического интерфейса для Git, возможность выбора есть, включая выбор того, использовать ли графический интерфейс вообще. Спешу предложить бесплатное приложение SourceTree, поскольку оно отлично сочетается с расширением Git Flow. В руководстве по SourceTree вы можете прочесть о реализации методологии Git Flow в рамках этого приложения.
Что игнорировать в Unity3D при работе с Git
Настройки Unity3D для работы с Git
Для версии Unity3D v4.3 и выше:
- (Для v4.5 и выше пропустите этот шаг) Выберите параметр External в Unity → Preferences → Packages → Repository .
- Используйте Visible Meta Files в Edit → Project Settings → Editor → Version Control Mode .
- Используйте Force Text в Edit → Project Settings → Editor → Asset Serialization Mode .
- Сохраните сцену и проект из меню File .
Дополнительно
Один из отрицательных аспектов использования Unity3D и Git в том, что Git не заботится о пустых папках (а Unity создает для них мета–файлы). Как результат, могут возникнуть не нужные конфликты.
Для решения, добавьте специальный обработчик в папку /.git/hooks/ репозитория проекта. Благодаря обработчику после каждого обновления проекта (pull/merge) Git будет проверять удаленные файлы, а также пустые папки.
Читайте также: