Совместная работа в Unity


30

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

Какие стратегии следует использовать, чтобы играть с Unity Assets?


Я думаю, что эта статья даст вам несколько советов: va.lent.in/blog/2011/12/13/…
Ден

2
DropBox поддерживает контроль версий, функция называется «Pack-Rat», но она не бесплатна. За советы для начинающих инди-разработчиков было задано множество вопросов. Я бы посоветовал вам немного погулять. Наконец, добро пожаловать в GameDev SE!
Quazi Irfan

Без сервера ресурсов могут возникнуть некоторые проблемы при перемещении вперед и назад префабов и сцен
Сидар

Ответы:


17

Unity имеет встроенную функцию для правильной поддержки контроля версий.

Просто зайдите в Файл-> Настройки проекта-> Редактор и включите внешний контроль версий.


4
Это функция Pro-only? Я не вижу этого пункта меню в бесплатной / инди-версии Windows Unity 2.6.
Джеймс

По состоянию на 30.01.2011, это только для Pro. См 2 - й абзац: unity3d.com/support/documentation/Manual/...
ojrac

11
Последний предварительный просмотр Unity (3.5 RC1) для разработчиков внес изменения в поддержку контроля версий в бесплатной версии. из журнала изменений ( unity3d.com/unity/preview/notes ): Лицензия: Общий внешний контроль версий (файлы .meta) теперь доступен в бесплатной версии.
Программист хронических игр

2
просто к сведению будущих посетителей, отметьте дату в этом ответе; это уже устарело. Теперь нет необходимости включать какие-либо настройки; просто создайте версии папок «Ресурсы» (убедитесь, что система контроля версий выбирает скрытые файлы .meta) и «Настройки проекта» и игнорируйте все остальное.
Джокинг

10

Я рекомендую использовать 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).
Слипп Д. Томпсон

Внутренняя ошибка сервера в вашем блоге.
Сантош Кумар

4

Unity 3.0 настроен для приятной игры с Subversion. (По крайней мере, лучше, чем раньше) Я не знаю, только ли это в про версии или нет, мне придется проверить.

В целом, наиболее рекомендуемой системой контроля версий является Unity Asset Server.


4

Специфично для Unity - все время работайте над разными сценами и разными файлами кода, а также вручную вносите изменения другого человека. Если вам обоим нужно работать над одной и той же сценой, продублируйте ее и используйте копию в качестве теста. В противном случае, если вы оба измените одну и ту же сцену, изменения одного человека заменят другие. Вы по-прежнему можете использовать контроль исходного кода для своих исходных файлов, просто не перемещайте их вообще, в файловой системе или через Unity, после того, как они созданы.

Совет новичку - приобретите приличный инструмент сравнения / слияния (мне нравится WinMerge ) и привыкните использовать его, чтобы увидеть, какие изменения внес другой человек, и вручную объединить изменения в конфликтующих файлах. Установите центральное пространство документации, например. документ для написания Google или вики, и храните там свою документацию - документация должна содержать как минимум список основных функций, чтобы вы знали, к чему вы стремитесь, и в идеале список задач, полученный из списка функций, с четким указанием кто работает над задачей. Поговорите друг с другом, чтобы получить общее представление о том, кому нужно работать над какой-либо задачей, и вычеркните их из списка, когда они закончат. Продолжайте пересматривать и переоценивать список, чтобы увидеть, все ли еще в силе и нужно ли переделывать какие-либо приоритеты.


Спасибо! Вы дали мне отличные советы по обеим моим проблемам.
Носферат

4

Я работаю с командой, которая называет себя Defective Studios. Мы боролись с одной и той же проблемой в течение многих лет, и совсем недавно я наконец сдался и начал писать расширение, чтобы помочь мне объединить игровые объекты.

По сути, подход заключается в создании интерфейса, похожего на инспектор, в окне, которое выровняет каждый игровой объект, компонент и свойство для сравнения и предоставляет кнопки для копирования значений (или целых объектов) с одной стороны на другую. Если вы знакомы с SerializedPropertyклассом, это то, что делает большую часть работы здесь. Мы в основном создать графический интерфейс , который синхронизирует состояние раскладывающегося между правой и левой стороной, и создаем вертикальное пространство везде , где GameObjectилиComponentсуществует только на правой или левой стороне. Функция сравнения проверяет равенство на каждом уровне и превращает фон каждой строки в красный или зеленый в зависимости от состояния равенства. Любая строка, чьи дочерние элементы содержат разницу, также станет красной, и мы также включили изящную кнопку для рекурсивного поиска в дереве и раскрытия всех объектов, которые отличаются или имеют различия в своих дочерних элементах.

Кроме того, есть набор полей маски, которые позволяют отфильтровывать определенные типы компонентов из сравнения. Атрибуты GameObject, такие как имя, слой и тег, также сравниваются. Мы используем SerializedObjectи SerializedPropertyдля обхода gameObjectсвойств и рисуем их так же, как они нарисованы в инспекторе. Это обеспечивает согласованность и намного проще в написании кода!

введите описание изображения здесь

Еще одна изящная деталь заключается в том, что процесс сравнения (запускаемый при загрузке объектов и при каждом изменении) запускается в специальной подпрограмме, которая обновляется EditorWindow.Updateфункцией, так что в случае, если вы сравниваете чрезвычайно сложный объект, окно не закрывает редактор. Это было необходимо при сравнении предметов с сотнями (или тысячами!) Детей. В общем, это был своего рода «проект lego», как любит говорить мой друг, но определенно бесценный инструмент, который мгновенно стал частью нашего рабочего процесса совместной работы.

Инструмент, Unity Merge это документировано на Unify вики, которая включает в себя дорожную карту и адрес электронной почты для обратной связи и выдачи отчетов. Если вы действительно боретесь со сложным слиянием, попробуйте и дайте нам знать, что вы думаете! Кроме того, я не удосужился встроить его в DLL, так что не стесняйтесь ковыряться в источнике. Специальная реализация сопрограмм и SerializedPropertyманипуляции с ними, а также несколько трюков с графическим интерфейсом, которые мне в конечном итоге понадобились, являются важной частью вашего набора инструментов для расширения редактора. Я очень заинтересован в изменениях / улучшениях, которые могут иметь пользователи, поэтому, пожалуйста, свяжитесь с нами!


1
Звучит как полезный инструмент, спасибо за улучшение вашего предыдущего ответа "только ссылка".
MichaelHouse

1

Если у вас есть средства для этого, сервер активов с профессиональной версией Unity довольно приличный. В прошлом я использовал его для большого проекта с несколькими людьми, и он сделал свою работу. Для ванильного контроля версий, он сделал то, что мы ожидали.

Я пытался использовать SVN-репозиторий с проектом Unity, и это было немного хлопотно. Однако в итоге мы отказались от идеи, прежде чем приступить к работе. Unity хранит много файлов резервных копий, которые я не хотел тратить время, чтобы выяснить, что произойдет, если они не будут синхронизированы с сервером. Я думаю, с небольшим изяществом это могло бы быть выполнимо, но у меня не было опыта с этим, работающим хорошо.

Я сделал небольшой проект, используя бесплатные функции DropBox. Это заставляло меня нервничать, но у нас никогда не было проблем. И я не думаю, что нам в конечном итоге понадобились какие-то реальные средства контроля версий для этого проекта, поэтому я не могу много говорить о том, как пошло бы обращение или слияние файлов.


1

Dropbox поддерживает управление версиями для каждого файла (а не для каждого коммита) и прекрасно работает с Unity. Сначала он бесплатный (2 гигабайта), а затем довольно дешевый (около 10 долларов за 50 гигабайт). Вам нужно дополнение PackRat, чтобы иметь доступ к истории версий.

Как и в случае с SVN, CVS, GIT и т. Д., Вам необходимо убедиться, что вы создаете папки тегов, когда переходите к каждому ключевому этапу разработки (например, конец недели, конец этапа). В отличие от вышеупомянутого, будет гораздо сложнее вернуться к такой стадии, если вы этого не сделаете, потому что вам придется возвращать каждый отдельный файл в отдельности. Имейте это в виду при разработке, и вам будет легко, не платя за Asset Server.


Это оооочень больно, хотя. Unity должна перестраивать сцену каждый раз, когда вы открываете ее на другом компьютере. Это изменяет папку библиотеки во многих местах для каждого коммита. Было бы неплохо игнорировать папку библиотеки, но тогда у вас не будет файлов сцены с управлением версиями. Моя команда сдалась и купила кучу профессиональных лицензий и использовала сервер активов.
Брэндон

@ Brandon Думаю, это зависит от размера проекта.
инженер

1
Определенно, если это пара разработчиков с ограниченным бюджетом, я бы предложил ваш подход, поскольку он действительно единственный
Брэндон

Но вы когда-нибудь работали над проектом, который остается под 2 ГБ? что насчет моделей и текстур вы будете в том числе. Взгляните на bitbucket.com и начните изучать git!
XandruCea

Абсолютно. В моем опыте проекты под Android / iOS определенно остаются такими же (в течение года я писал этот ответ). Кроме того, вы можете заработать больше места в Dropbox, пригласив друзей.
инженер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.