Робота в команді в єдності


30

У мене є проект Unity без будь-якого контролю версій, і мені потрібно поділитися ним з іншим розробником, щоб ми обидва могли працювати над проектом.

Які стратегії слід використовувати, щоб це було добре для Unity Assets?


Я думаю , що ця стаття дасть вам деякі поради: va.lent.in/blog/2011/12/13 / ...
Den

2
DropBox підтримує управління версіями, ця функція називається "Pack-Rat", але вона не безкоштовна. За порадами для початківців інді-розробників раніше були задані численні запитання. Я б запропонував вам трохи погуляти. Нарешті Ласкаво просимо до GameDev SE!
Quazi Irfan

Без сервера активів можуть виникнути проблеми при переміщенні вперед і назад збірних даних і сцен
Сидар

Відповіді:


17

У Unity є вбудований інструмент для належної підтримки версій.

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


4
Це особливість лише для професіоналів? Я не бачу цього пункту меню у вільній / інді-версії Windows Unity 2.6.
Джеймс

Станом на 30.01.2011, це лише Pro. Дивіться другий абзац: юни3d.com
support/documentation/

11
Останній попередній перегляд розробника Unity (3.5 RC1) змінив підтримку контролю версій у безкоштовній версії. з журналу змін ( юни3d.com/unity/preview/notes ): Ліцензія: Загальний зовнішній контроль версій (файли .meta) тепер доступний у безкоштовній версії.
Хронічний ігровий програміст

2
просто фійте для майбутніх відвідувачів, зазначте дату у цій відповіді; це вже застаріло. Тепер не потрібно вмикати будь-які налаштування; просто встановіть папки "Активи" (переконайтеся, що ваш контроль версій збирає приховані файли .meta) та "Налаштування проекту" та ігноруйте все інше.
поштовх

10

Я рекомендую використовувати Git, це безкоштовно і найкраще.

Нещодавно я писав про керування версіями (за допомогою Git) своєму блозі

Довга історія:

Увімкніть зовнішнє керування версіями Файл-> Налаштування проекту-> Редактор та створіть файл .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 налаштований на гарну гру з підривною роботою. (Принаймні приємніше, ніж раніше) Я не знаю, чи є це лише у професійній версії чи ні, мені доведеться перевірити.

Взагалі, найбільш рекомендованою системою управління версіями є Unity Asset Server.


4

Unity specific - працюйте над різними сценами та різними файлами кодів у будь-який час, а також змішуйте зміни іншої людини вручну. Якщо вам обом потрібно працювати на одній сцені, скопіюйте її та використовуйте копію як тест. В іншому випадку, якщо ви обидва модифікуєте одну і ту ж сцену, зміни однієї людини замінять іншу. Ви все одно можете використовувати управління джерелами для своїх вихідних файлів, просто не пересувайте їх навколо, у файловій системі або за допомогою Unity, коли вони створені.

Порада для початківців - придбайте собі гідний інструмент "розріз / злиття" (мені подобається WinMerge ) і звикніть використовувати його, щоб побачити, що змінив інший чоловік, і вручну об'єднати зміни в конфліктних файлах. Налаштуйте центральний простір для документації, наприклад. документ, що пише Google, або вікі, і зберігайте там свою документацію - документація повинна містити як мінімум основний список функцій, щоб ви знали, що ви прагнете, а в ідеалі - список завдань, отриманий зі списку функцій, а також чітку вказівку хто працює над цим завданням. Поговоріть один з одним, щоб отримати грубе уявлення про те, хто повинен працювати над тим, яке завдання і перекреслити їх зі списку, коли вони будуть виконані. Продовжуйте переглядати та переоцінювати список, щоб побачити, чи все ще діє, і чи потрібно переробити будь-які пріоритети.


Дякую! Ви дали чудові поради щодо моїх проблем.
носферат

4

Я працюю з командою, яка називає себе Defective Studios. Ми боролися з тим самим випуском протягом багатьох років, і зовсім недавно я нарешті поступився і почав писати розширення, щоб допомогти мені об'єднати ігрові об’єкти.

В основному підхід полягає у створенні інтерфейсу, подібного до інспектора, у вікні, яке вирівнює між собою кожен ігровий об'єкт, компонент та властивість для порівняння та забезпечує кнопки для копіювання значень (або цілих об'єктів) з однієї сторони на іншу. Якщо ви знайомі з SerializedPropertyкласом, саме тут виконується основна частина роботи. В основному ми створюємо графічний інтерфейс, який синхронізує стан згину між правою та лівою стороною та створює вертикальний простір, де бGameObject абоComponentіснує лише з правого або лівого боку. Функція порівняння перевіряє рівність на кожному рівні та перетворює фон кожного рядка в червоний або зелений, залежно від стану рівності. Будь-який рядок, у якого діти містять різницю, також стане червоним, і ми також включили чудову кнопку для рекурсивного пошуку дерева та розширення всіх об'єктів, які відрізняються або мають відмінності у своїх дітей.

Крім того, існує набір полів масок, які дозволяють фільтрувати певні типи компонентів із порівняння. Атрибути GameObject, такі як ім'я, шар та тег, також порівнюються. Ми використовуємо SerializedObjectі SerializedPropertyперебираємо черезgameObject властивості 's, і малюємо їх так, як вони намальовані в інспекторі. Це забезпечує узгодженість і кодування набагато простіше!

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

Остання остання витончена деталь - це те, що процес порівняння (запускається під час завантаження об'єктів і кожного разу, коли відбувається зміна) запускається у спеціальній кореневій програмі, яка оновлюється EditorWindow.Updateфункцією, так що, якщо ви порівнюєте надзвичайно складний об'єкт, вікно не замикає редактор. Це було обов’язково при порівнянні предметів із сотнями (або тисячами!) Дітей. Загалом, це був свого роду "проект лего", як любить говорити мій друг, але, безумовно, неоціненний інструмент, який миттєво став частиною нашого робочого процесу співпраці.

Інструмент, Unity Merge це документовано на Unify вики, яка включає в себе дорожню карту та адресу електронної пошти для зворотного зв'язку і видачі звітів. Якщо ви справді боретеся зі складним злиттям, дайте йому постріл і повідомте нам, що ви думаєте! Крім того, я не намагався вбудовувати його в DLL, тому сміливо торкайтеся біля джерела. Спеціальна реалізація та SerializedPropertyманіпуляції з кореспонденцією , а також декілька хитрощів із графічним інтерфейсом, які мені потрібні, є великою частиною вашого інструментарію розширень редактора. Мені дуже цікаві зміни / удосконалення, які можуть мати користувачі, тому, будь ласка, зв’яжіться!


1
Здається, корисний інструмент, дякую за те, що ви покращили попередню відповідь "лише для посилання".
MichaelHouse

1

Якщо у вас є кошти на це, сервер Asset з про-версією Unity досить пристойний. У минулому я використовував це у великому проекті для багатьох людей, і він зробив свою роботу. Для контролю ванільної версії він зробив те, що ми очікували.

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

Я зробив невеликий проект, використовуючи безкоштовні функції DropBox. Це нервувало мене, але у нас ніколи не було проблем. І, я не думаю, що нам потрібен реальний матеріал контролю версій для цього проекту, тому я не можу багато говорити про те, як пішли би файли, що повертаються або об'єднуються.


1

Dropbox підтримує версію файлів (а не за комісію) і чудово грає з Unity. Спочатку він безкоштовний (2 гігабайти) і згодом досить дешево (близько 10 доларів за 50 гіг). Щоб мати доступ до історії версій, вам потрібен аддон PackRat.

Як і у форматі SVN, CVS, GIT тощо, вам потрібно буде переконатися, що ви створюєте папки тегів, коли ви потрапите на кожен ключовий етап розвитку (наприклад, кінець тижня, кінець етапу). На відміну від вищезазначеного, повернутися до такого етапу буде набагато важче, якщо цього не зробити, тому що вам доведеться повернути кожен файл окремо. Майте це на увазі, розвиваючись, і у вас буде легкий час без оплати сервера активів.


Це так ооооо боляче. Єдність повинна відновлювати сцену щоразу, коли ви відкриваєте її на іншому комп’ютері. Це змінює папку бібліотеки у багатьох місцях для кожної комісії. Ігнорування папки бібліотеки було б непогано, але тоді б у вас не було файлів сцени, що контролюються версією. Моя команда здалася і купила купу професійних ліцензій та використаний сервер активів.
Брендон

@brandon Зрозумійте, це залежить від розміру проекту.
Інженер

1
Безумовно, якщо це пара розробок з обмеженим бюджетом, я б запропонував ваш підхід, оскільки він справді єдиний
брендон

Але ви коли-небудь працювали над проектом, який залишається менше 2 Гб? як щодо моделей і фактур, які ви будете включати. Погляньте на bitbucket.com і починайте вивчати git!
XandruCea

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