У меня есть проект Unity без какого-либо контроля версий, и мне нужно поделиться им с другим разработчиком, чтобы мы оба могли работать над проектом.
Какие стратегии следует использовать, чтобы играть с Unity Assets?
У меня есть проект Unity без какого-либо контроля версий, и мне нужно поделиться им с другим разработчиком, чтобы мы оба могли работать над проектом.
Какие стратегии следует использовать, чтобы играть с Unity Assets?
Ответы:
Unity имеет встроенную функцию для правильной поддержки контроля версий.
Просто зайдите в Файл-> Настройки проекта-> Редактор и включите внешний контроль версий.
Я рекомендую использовать Git, это бесплатно и лучше всего.
Некоторое время назад я писал о контроле версий (используя Git) в своем блоге
Короче говоря:
Включите внешний контроль версий File-> Project Settings-> Editor и создайте файл .gitignore, чтобы избежать ненужных вещей в репозитории (это не является действительно необходимым, но это будет бесценным во время разработки).
Вот как должен выглядеть файл:
[Oo]bj/
[Tt]emp/
[Ll]ibrary
#These are files in the root folder of the project
*.tmproj
*.csproj
*.unityproj
*.sln
*.suo
*.user
*.pidb
*.userprefs
.gitingore
использование I проектов Unity , но с несколькими пропуски: [Bb]uild/
, *.booproj
, sysinfo.txt
. Я вполне уверен, что я использую на основе шаблонов нового репозитория GitHub для Unity ( github.com/github/gitignore/blob/master/Unity.gitignore ) любой Objective-C (при нацеливании на iOS).
Unity 3.0 настроен для приятной игры с Subversion. (По крайней мере, лучше, чем раньше) Я не знаю, только ли это в про версии или нет, мне придется проверить.
В целом, наиболее рекомендуемой системой контроля версий является Unity Asset Server.
Специфично для Unity - все время работайте над разными сценами и разными файлами кода, а также вручную вносите изменения другого человека. Если вам обоим нужно работать над одной и той же сценой, продублируйте ее и используйте копию в качестве теста. В противном случае, если вы оба измените одну и ту же сцену, изменения одного человека заменят другие. Вы по-прежнему можете использовать контроль исходного кода для своих исходных файлов, просто не перемещайте их вообще, в файловой системе или через Unity, после того, как они созданы.
Совет новичку - приобретите приличный инструмент сравнения / слияния (мне нравится WinMerge ) и привыкните использовать его, чтобы увидеть, какие изменения внес другой человек, и вручную объединить изменения в конфликтующих файлах. Установите центральное пространство документации, например. документ для написания Google или вики, и храните там свою документацию - документация должна содержать как минимум список основных функций, чтобы вы знали, к чему вы стремитесь, и в идеале список задач, полученный из списка функций, с четким указанием кто работает над задачей. Поговорите друг с другом, чтобы получить общее представление о том, кому нужно работать над какой-либо задачей, и вычеркните их из списка, когда они закончат. Продолжайте пересматривать и переоценивать список, чтобы увидеть, все ли еще в силе и нужно ли переделывать какие-либо приоритеты.
Я работаю с командой, которая называет себя Defective Studios. Мы боролись с одной и той же проблемой в течение многих лет, и совсем недавно я наконец сдался и начал писать расширение, чтобы помочь мне объединить игровые объекты.
По сути, подход заключается в создании интерфейса, похожего на инспектор, в окне, которое выровняет каждый игровой объект, компонент и свойство для сравнения и предоставляет кнопки для копирования значений (или целых объектов) с одной стороны на другую. Если вы знакомы с SerializedProperty
классом, это то, что делает большую часть работы здесь. Мы в основном создать графический интерфейс , который синхронизирует состояние раскладывающегося между правой и левой стороной, и создаем вертикальное пространство везде , где GameObject
илиComponent
существует только на правой или левой стороне. Функция сравнения проверяет равенство на каждом уровне и превращает фон каждой строки в красный или зеленый в зависимости от состояния равенства. Любая строка, чьи дочерние элементы содержат разницу, также станет красной, и мы также включили изящную кнопку для рекурсивного поиска в дереве и раскрытия всех объектов, которые отличаются или имеют различия в своих дочерних элементах.
Кроме того, есть набор полей маски, которые позволяют отфильтровывать определенные типы компонентов из сравнения. Атрибуты GameObject, такие как имя, слой и тег, также сравниваются. Мы используем SerializedObject
и SerializedProperty
для обхода gameObject
свойств и рисуем их так же, как они нарисованы в инспекторе. Это обеспечивает согласованность и намного проще в написании кода!
Еще одна изящная деталь заключается в том, что процесс сравнения (запускаемый при загрузке объектов и при каждом изменении) запускается в специальной подпрограмме, которая обновляется EditorWindow.Update
функцией, так что в случае, если вы сравниваете чрезвычайно сложный объект, окно не закрывает редактор. Это было необходимо при сравнении предметов с сотнями (или тысячами!) Детей. В общем, это был своего рода «проект lego», как любит говорить мой друг, но определенно бесценный инструмент, который мгновенно стал частью нашего рабочего процесса совместной работы.
Инструмент, Unity Merge это документировано на Unify вики, которая включает в себя дорожную карту и адрес электронной почты для обратной связи и выдачи отчетов. Если вы действительно боретесь со сложным слиянием, попробуйте и дайте нам знать, что вы думаете! Кроме того, я не удосужился встроить его в DLL, так что не стесняйтесь ковыряться в источнике. Специальная реализация сопрограмм и SerializedProperty
манипуляции с ними, а также несколько трюков с графическим интерфейсом, которые мне в конечном итоге понадобились, являются важной частью вашего набора инструментов для расширения редактора. Я очень заинтересован в изменениях / улучшениях, которые могут иметь пользователи, поэтому, пожалуйста, свяжитесь с нами!
Если у вас есть средства для этого, сервер активов с профессиональной версией Unity довольно приличный. В прошлом я использовал его для большого проекта с несколькими людьми, и он сделал свою работу. Для ванильного контроля версий, он сделал то, что мы ожидали.
Я пытался использовать SVN-репозиторий с проектом Unity, и это было немного хлопотно. Однако в итоге мы отказались от идеи, прежде чем приступить к работе. Unity хранит много файлов резервных копий, которые я не хотел тратить время, чтобы выяснить, что произойдет, если они не будут синхронизированы с сервером. Я думаю, с небольшим изяществом это могло бы быть выполнимо, но у меня не было опыта с этим, работающим хорошо.
Я сделал небольшой проект, используя бесплатные функции DropBox. Это заставляло меня нервничать, но у нас никогда не было проблем. И я не думаю, что нам в конечном итоге понадобились какие-то реальные средства контроля версий для этого проекта, поэтому я не могу много говорить о том, как пошло бы обращение или слияние файлов.
Dropbox поддерживает управление версиями для каждого файла (а не для каждого коммита) и прекрасно работает с Unity. Сначала он бесплатный (2 гигабайта), а затем довольно дешевый (около 10 долларов за 50 гигабайт). Вам нужно дополнение PackRat, чтобы иметь доступ к истории версий.
Как и в случае с SVN, CVS, GIT и т. Д., Вам необходимо убедиться, что вы создаете папки тегов, когда переходите к каждому ключевому этапу разработки (например, конец недели, конец этапа). В отличие от вышеупомянутого, будет гораздо сложнее вернуться к такой стадии, если вы этого не сделаете, потому что вам придется возвращать каждый отдельный файл в отдельности. Имейте это в виду при разработке, и вам будет легко, не платя за Asset Server.