Unity中的团队合作


30

我有一个没有任何版本控制的Unity项目,我需要与其他开发人员共享它,以便我们俩都可以从事该项目。

应该使用哪些策略与Unity Assets配合使用?


我认为这篇文章会给您一些提示:va.lent.in/blog/2011/12/13/…– 2011

2
DropBox支持版本控制,此功能称为“ Pack-Rat”,但并非免费。对于初学者的独立开发者的建议,以前已经问过很多问题。我建议你走一走。最后,欢迎来到GameDev SE!
Quazi Irfan 2011年

没有资产服务器,来回移动预制件和场景时可能会遇到一些问题
Sidar 2013年

Answers:


17

Unity具有内置的功能,可以正确支持版本控制。

只需进入File-> Project Settings-> Editor并启用外部版本控制。


4
这是仅专业功能吗?我没有在Unity 2.6的免费/独立Windows版本中看到该菜单项。
詹姆斯

自2011年1月30日起,它仅支持专业版。见第二段: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我使用了统一的项目,但有一些ommissions: ,[Bb]uild/,。*.booproj sysinfo.txt我很确定我使用的是基于GitHub的Unity的新仓库模板(github.com/github/gitignore/blob/master/Unity.gitignore)以及任何Objective-C(面向iOS时)。
Slipp D. Thompson 2014年

您博客上的内部服务器错误。
Santosh Kumar,

4

Unity 3.0配置为与Subversion完美兼容。(至少比以前更好)我不知道这是否仅是专业版,我必须检查一下。

通常,最推荐的版本控制系统是Unity Asset Server。


4

特定于Unity的-始终在不同的场景和不同的代码文件上工作,并手动合并其他人的更改。如果两个人都需要在同一场景上工作,请对其进行复制,然后将副本用作测试。否则,如果两个人都修改了同一场景,则一个人的更改将覆盖另一个人。您仍然可以对源文件使用源代码管理,只是一旦创建它们,就根本不要在文件系统中或通过Unity移动它们。

初学者的建议-给自己一个不错的差异/合并工具(我喜欢WinMerge),并习惯于使用它来查看他人所做的更改,并手动合并冲突文件中的更改。设置中央文档空间,例如。Google撰写文档或Wiki,并将文档保存在此处-文档应至少包含基本功能列表,以便您了解目标功能,理想情况下应包含从功能列表派生的任务列表以及明确的指示谁在完成任务。相互交谈以大致了解谁需要完成哪个任务,并在完成任务时将其从列表中删除。继续查看并重新评估该列表,以查看所有内容是否仍然有效以及是否需要重新安排优先级。


谢谢!您对我的两个问题都给了我很好的建议。
nosferat 2011年

4

我与一个名为Defective Studios的团队合作。多年来,我们一直在为同一个问题奋斗,最近我终于屈服了,并开始编写扩展以帮助我合并游戏对象。

基本上,该方法是在窗口中创建类似于检查器的界面,并排排列每个游戏对象,组件和属性以进行比较,并提供将值(或整个对象)从一侧复制到另一侧的按钮。如果您熟悉,SerializedProperty门课,那就是这里要做的大部分工作。我们基本上创建了一个GUI,该GUI在左右两侧之间同步折叠状态,并在a GameObjectComponent仅存在于右侧或左侧。比较功能在每个级别检查相等性,然后根据相等性的状态将每行的背景变为红色或绿色。子项包含差异的任何行也会变为红色,并且我们还包括一个漂亮的按钮,用于递归搜索树并展开所有子项不同或具有差异的对象。

同样,还有一组掩码字段,可让您从比较中过滤某些组件类型。还比较了GameObject属性,例如名称,图层和标签。我们使用SerializedObjectSerializedProperty来遍历gameObject的属性,并像在检查器中绘制的那样绘制它们。这样可以确保一致性,并且更容易编写代码!

在此处输入图片说明

最后一个很漂亮的细节是,比较过程(在加载对象和进行更改时触发)在由该EditorWindow.Update函数更新的临时协程中运行,因此,如果要比较一个非常复杂的对象,窗口不会锁定编辑器。将对象与成百上千个孩子进行比较时,这是必须的。总而言之,就像我的朋友喜欢说的那样,这是一个“乐高项目”,但绝对是一种无价的工具,它立即成为我们协作工作流程的一部分。

该工具,统一合并记录在统一的wiki,其中包括一个路线图和一个电子邮件地址,反馈和问题报告。如果您真的在复杂的合并中挣扎,请试一试,让我们知道您的想法!另外,我也不用将其构建为DLL,因此随时可以在源代码中随意查找。临时协程的实现和SerializedProperty操作,以及我最终需要的一些GUI技巧,都是您的编辑器扩展工具包的重要组成部分。我对用户可能会进行的更改/改进非常感兴趣,因此请保持联系!


1
听起来像是一个有用的工具,感谢您改进您以前的“仅链接”答案。
MichaelHouse

1

如果您有足够的资金,配备Unity Pro专业版的资产服务器相当不错。过去,我曾在一个大型的,多人的项目中使用过它,而它确实起作用了。对于原始版本控制,它执行了我们期望的操作。

我尝试过将SVN存储库与Unity项目一起使用,这有点麻烦。但是,我们最终在将该想法付诸实践之前便取消了这个想法。Unity保留了很多我不想花时间去了解的备份文件,如果它们不同步到服务器会发生什么。我认为,只要稍加技巧,它就可以实现,但是我没有很好的工作经验。

我已经使用DropBox的免费功能完成了一个小项目。这让我感到紧张,但我们从来没有任何问题。而且,我认为我们最终并不需要为该项目提供任何实际的版本控制内容,因此我不能过多地谈谈恢复或合并文件的方式。


1

Dropbox支持每个文件的版本控制(而不是每个提交),并且可以很好地与Unity配合使用。它最初是免费的(2 GB),之后相当便宜(50gig约10美元)。您需要PackRat插件才能访问版本历史记录。

就像使用SVN,CVS,GIT等一样,当您进入开发的每个关键阶段(例如,一周结束,里程碑结束)时,都需要确保创建标签文件夹。与前面提到的不同,如果您不这样做,将很难恢复到这样的阶段,因为您将不得不单独恢复每个文件。在开发时请记住这一点,您将无需花费Asset Server就能轻松地度过。


不过,这太痛苦了。每当您在另一台计算机上打开场景时,Unity都必须重建场景。每次提交都会在很多地方更改库文件夹。忽略库文件夹会很好,但是那样就不会有版本控制的场景文件。我的团队放弃了,买了很多专业许可证和二手资产服务器。
布兰登2012年

@brandon猜猜这取决于项目规模。
工程师

1
肯定的,如果是几个预算有限的开发人员,我建议您采用这种方法,因为它确实是唯一的方法
brandon 2012年

但是您是否曾经从事过2 GB以下的项目?您将包括的模型和纹理呢?看看bitbucket.com并开始学习git!
XandruCea 2015年

绝对。根据我的经验(在我撰写此答案的那一年中),Android / iOS项目绝对可以保持在这个规模之下。另外,您可以通过邀请朋友在Dropbox上获得更多空间。
工程师
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.