svn unity3d svn插件场景冲突怎么补救

使用Unity3D也有一段时间了,由于团队一直使用SVN进行版本管理,现总结一下:
(1) Unity3D的二进制资源必须加锁进行版本控制,因为它没办法merge;
(2) Unity3D自己产生的C#工程相关文件,包括VS产生或者Mono产生的,都不需要归入版本控制;
(3) 在新加入项时,Unity3D会产生一个同名的.meta文件,这个文件记录了此项一个唯一的64位的guid,这个文件必须上传,否则会出现各种缺失的异常情况(比如脚本Miss等)
(4) 对于ProjectSettings文件夹,有以下几个.Asset文件需要进行版本管理:
&&&&&&&&&&&&&& TimeManager
&&&&&&&&&&&&&& TagManager
&&&&&&&&&&&&&& QualitySettings
&&&&&&&&&&&&&& ProjectSettings
&&&&&&&&&&&&&& NetworkManager
&&&&&&&&&&&&&&&InputManager
&&&&&&&&&&&&&&&EditorBuildSettings
&&&&&&&&&&&&&& DynamicsManager
&&&&&&&&&&&&&& AudioManager
即便如此,在使用Editor进行开发时,由于需要经常改动场景的.unity&文件,而这个是二进制的,所以需要得锁且不能Merge。感觉并行开发的难度还是比较大的,Unity3D还是比较适合个人开发者和较小团队开发,对于大型团队开发,无论是从版本管理还是代码结构上,都觉得不太方便和自然。
Unity3D - 导入/导出Package功能和项目管理的研究
&&&&&& 本文首先描述了Unity3.0在支持大型游戏项目开发时的两个不足:即对模块化和svn协同缺乏支持。随后,分析了Unity自带的Export/Import Package 功能,并提出了使用此功能与svn配合实现多人项目协同的方法。&
Unity项目协同的挑战
&&&& 在使用Unity开发游戏项目时,一般都需要多人同时工作。例如每人负责不同的场景,或者一些人负责调试光照和渲染,另一些负责编写程序逻辑。总之一个人全包的情况对于稍大一点的项目而言少之又少。但遗憾的是Unity对协同项目工作和大型项目的支持可以用糟糕来形容。&
&&&& 首先,Unity没有模块化开发的概念。我们知道模块化是开发大型项目必须的一种实践方法。例如用VC开发大型程序时,我们可以把程序拆分成多个dll项目来开发,由此减少单个项目的复杂度和编译时间。另一个例子是flash程序的开发,同样可以把工作拆分成多个flash项目,最后将每个项目生成的swf或者swc合在一起工作。&
&&&& 然而到目前的3.0版本为止,Unity仍然不支持类似dll或者swc/swf这种模块化构建应用程序的方法。对Unity而言,一个游戏就是一个工程。如果游戏规模很大,包含很多资源,那么项目就不可避免地变得臃肿和难以维护。Unity在打开、刷新、编译这类工程时也会耗用更多的时间。以至于在Unity官方论坛上都能看到许多这方面的抱怨。例如这篇帖子就详细地描述了一个770M左右大小的项目所面临的困境。&
&&&&&&其次,Unity会将项目信息以二进制格式保存在library目录中,其中被称为元数据(Meta Data)的信息更是记录了构成游戏的许多关键数据(例如所使用的各项设置、Asset之间的引用关系等)。但由于这些数据是二进制格式,并且存放方式很不清晰,因此在使用SVN等版本管理系统时,无法采取多人修改-合并的方式。只能一个人改完后,提交整个项目,然后下一个人再改。严重阻碍了项目协同。Unity官方提供了一个收费的AssetServer,我没有用过,不知能否解决这个问题。如果我们能通过一些手段让免费的svn发挥作用,何乐而不为呢?&
&&&&&&对于Unity的第一个缺点,我们暂时没有好的办法来解决,只能希望Unity后续的版本能提供模块化的支持。(,推出一款针对MMOG开发的产品组合。Unity将推出一个叫Legion的版本,与ExitGame的Photon配合。我猜测Legion应该对大型游戏项目要支持得更好些吧。)&
&&&&&&至于第二个缺点,我们可以用Unity的输出/导入包(Export/Import Package)功能,配合svn在一定程度上加以解决。&
用“输出/导入包(Export/Import Package)”功能实现项目协同
Unity的Export/Import Package功能主要用途是在不同的项目之间实现asset复用。该功能的基本介绍和操作详见,本文将进一步描述该功能的具体表现,以及如何利用该功能实现多人项目的协作。&
导入导出包功能具有下列特性:&&
在导出时,Unity会记录导出内容在项目中的完整路径,并在导入时重建对应的目录结构。因此我们可以方便地在项目间同步目录。&&导出时,Unity会让你选择是否导出被依赖的内容。如果钩选择会自动添加被依赖的内容,并显示在列表中。如下图。
[attachment=14]
不导出依赖
[attachment=15]
导入时,Unity会判断当前项目中是否存在名称、路径完全相同的文件。若有,则判断修改时间是否一致,若一致就忽略,否则会提示是否覆盖。注意Unity并不管文件的新旧,只是简单地询问用户是否用包中的文件覆盖项目中的同名文件。如下图:
[attachment=16]
最重要的是,Unity输出包时,还包含了asset对应的元数据。用WinRAR或者其他压缩软件打开Unity导出的.unitypackage文件,就可以看到这些元数据文件,如下图:
[attachment=17]
&&&&&&正是由于导出的包自动包含了相关元数据信息,弥补了用SVN无法管理这些数据的缺陷,我们就可以将二者配合使用,达到多人在一个项目中协同工作的效果。具体建议如下:
首先用SVN建立对整个项目文件夹的管理,包括asset和library目录以及下面的文件;由负责集成的项目组成员管理并提交该项目更新到svn数据库其他协作人员从svn数据库下载最新的项目文件协作人员对自己负责的内容进行工作,然后将成果输出。输出时不要钩选依赖将输出的unitypackage文件提交给集成人员(通过svn或者其他途径都可以)集成人员将新的unitypackage导入项目,然后再提交到svn数据库
&&&&&& 如果对人员分工、规范以及项目目录规划得好的话,采用这种方式完全可以实现多人同时工作,提高项目开发和迭代的效率。
http://blog.csdn.net/programmerboymxd/article/details/7342348
本文已收录于以下专栏:
相关文章推荐
Unity提供了自己的XXXServer,不过大家评论好像不是很好用,主要是不支持branch等我们做项目的重要特性;他还推荐Perforce这样高大上的版本管理系统,不过都很贵。所以我还是打算使用比...
首先,AssetServer确实很好用,Unity内部集成的管理界面,操作很简单,提交冲突的后还可以进行文件比对。但学习使用过程中,发现文件体积较大的项目文件目录(600M),我提交不上去,会返回没有...
Unit3D项目使用SVN作为版本管理时需要注意的事项。
自从来到现在的公司,负责Unity组开发以来,尝试了各种版本控制工具。从一开始的TortoiseSVN,到后来为了追求逼格使用Git,尝试了Github客户端和SourceTree,发现都有各种不爽。...
这里有详细的教你SVN管理unity的设置
如果不购买官方的TeamLicense,使用SVN版本控制也是一个不错的选择。
首先在SVN服务器建立项目文件夹;
本地项目需要进行一些操作之后才能Import到服务器,
1、 ...
假设版本控制使用的是TortoiseSVN,频繁切换Unity工程与文件夹是一个很令人懊恼的事情,能不能在Unity当中调用SVN基础操作呢?答案是可以的。通过几个简单的命令行,就可以极大节省时间成本...
原文链接:http://blog.csdn.net/neil3d/article/details/
Unity提供了自己的XXXServer,不过大家评论好像不是很好用,主要是不...
追踪Assets和ProjectSettings这两个文件夹
集成svn同步工具,非常好用/*
* 将TortoiseSVN的基础操作内嵌Unity
* 这里只是举了几个简单的例子
* 具体命令可参见TortoiseSVN的help功能
他的最新文章
讲师:王哲涵
讲师:韦玮
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)unity3d项目版本控制遇到些问题,找了以下资料做参考,现在mark一下,以后慢慢解决,之后总结。
Unity开启meta。
meta:版本控制文件,在新加入项时,Unity3D会产生一个同名的.meta文件,这个文件记录了此项一个唯一的64位的guid,协作开发时这个文件必须上传,否则会出现各种缺失的异常情况。
使用Unity3D也有一段时间了,由于团队一直使用SVN进行版本管理,现总结一下:
(1) Unity3D的二进制资源必须加锁进行版本控制,因为它没办法merge;
(2) Unity3D自己产生的C#工程相关文件,包括VS产生或者Mono产生的,都不需要归入版本控制;
(3) 在新加入项时,Unity3D会产生一个同名的.meta文件,这个文件记录了此项一个唯一的64位的guid,这个文件必须上传,否则会出现各种缺失的异常情况(比如脚本Miss等)
(4) 对于Library文件夹,有以下几个.Asset文件需要进行版本管理:
&&&&&&&&&&&&&& TimeManager
&&&&&&&&&&&&&& TagManager
&&&&&&&&&&&&&& QualitySettings
&&&&&&&&&&&&&& ProjectSettings
&&&&&&&&&&&&&& NetworkManager
&&&&&&&&&&&&&&&InputManager
&&&&&&&&&&&&&&&EditorBuildSettings
&&&&&&&&&&&&&& DynamicsManager
&&&&&&&&&&&&&& AudioManager
即便如此,在使用Editor进行开发时,由于需要经常改动场景的.unity&文件,而这个是二进制的,所以需要得锁且不能Merge。感觉并行开发的难度还是比较大的,Unity3D还是比较适合个人开发者和较小团队开发,对于大型团队开发,无论是从版本管理还是代码结构上,都觉得不太方便和自然。
如何使用SVN管理Unity&3.5项目。虽然Unity有自己的Asset Server,但是感觉不方便,而且不能管理相关的需求、设计文档,除非把这些放进Assets文件夹。
Unity 3.5版本以后,使用SVN要方便一些了。因为必要的*.asset文件全部被独立的放在了ProjectSettings文件夹下。所以只要把Assets、ProjectSettings两个文件夹提交到SVN来管理即可。可以为根目录添加svn:ignore属性,内容为Library、Temp、obj这样,这些内容就不会被提交了。另外还有一项设置别忘了。菜单 Edit / Project Settings/ Editor。
使用SVN管理Unity 3.5项目
使用SVN的时一定要选Meta Files,默认是Disable。把除Assets、ProjectSettings之外的文件夹全部添加到忽略列表里提交。
内容来源:http://www.unity & &/3015.html
阅读(...) 评论()Unity3D游戏开发之使用SVN对Unity进行版本控制_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Unity3D游戏开发之使用SVN对Unity进行版本控制
&&关于这个国内各种简单到家的文章让人搞不懂,而且场景合并,prefab合并等关键问题都说没法解决,其实本质就是因为它们都是二进制文件,所以SVN没法对其合并,但事实上Unity是支持把这些文件都强制使用文本的!后面会提到。另外本人英文能力有限,渣翻译。虽说是翻译,但其实没照搬。
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢之前一直对svn的原理了解的不是很透彻,今天有幸得一位同事帮助,明白了其中一种分支合并冲突的解决办法。
场景如下:
客户端工具:tortoiseSvn
分支情况:
要求:分支2是从分支1上建立的分支。现在分支1发布后已经合并到主干。分支2还在继续开发,期望更新分支1所有的变化。
问题:如图,如果直接从主干上更新到分支2,会报很多文件树冲突。如何解决这个问题呢。
办法:我是这么做的,把分支1的变化全部更新到分支2,然后再从主干更新。从主干更新时,选择第一个更新
然后一定要选
上图,这个选项。这个选项的意思是只合并记录,但不合并内容。(因为分支2已经更新过分支1了,所以和主干上的内容是一模一样的)
PS:最后一步更新主干,需要对比所有文件,比较费时。还有一种捷径,就是手动修改分支下的svn合并信息。这样,省去了比较的麻烦。(新手不建议手动修改)
下面先看svn合并信息,在分支2目录右键--》属性--》选择Subversion页签--》点击Perperties...按钮--》在弹出框里双击svn:mergeinfo属性。
看到诸如这样的合并记录信息,其实这个就是在该分支上所有的合并信息。像我们刚才那样只要求更新主干合并信息,而不需要合并内容的操作。只需要把主干的路径加上需要合并的版本号就可以了。大家不妨试试。
说的比较简略,有什么问题,大家再探讨。
本文已收录于以下专栏:
相关文章推荐
http://apps./share/detail/2530590
偶尔,当你从版本库更新、合并文件时,或者切换工作副...
版本冲突原因:假设A、B两个用户都在版本号为100的时候,更新了kingtuns.txt这个文件,A用户在修改完成之后提交kingtuns.txt到服务器,这个时候提交成功,这个时候kingtuns....
删除bin,obj 文件夹重新update提交
csproj.user 配置文件,自动生成的,会记录项目生成路径、项目启动程序等信息。
bin  文件夹 存放编译后的程序集(可执行文...
在SVN下,有时会出现如下错误:
C storage/IMountService.java
local unversioned, incoming add upon ...
树冲突因为其他伙伴修改了文件夹名字或者有移动,这边提交就会报错“仍处于树冲突”。 其他正规的解决方案比较麻烦,最简单就是先备份本地项目,然后删除项目,重新检出,然后编辑自己修改过的文件再“提交”。 这...
使用场景:
假如你的项目(这里指的是手机客户端项目)的某个版本(例如1.0版本)已经完成开发、测试并已经上线了,接下来接到新的需求,
新需求的开发需要修改多个文件中的代码,当需求已经开始开发一段时间的...
【SVN多用户开发】代码冲突&解决办法
SVN是一款集中式的代码存储工具,可以帮助多个用户协同开发同一应用程序。
但是SVN不能完全代替人工操作,有时也需要程序员自己进...
1.        点击提交,报错——‘SVN提交’has encountered a problem.
2.        选中无法提交...
此方法是我在网上看到的,当时自己也遇到SVN文件冲突,看了后感觉还不错 ,所以收藏一下与大家分享
解决版本冲突的命令。在冲突解决之后,需要使用svn resolved来告诉subv...
他的最新文章
讲师:王哲涵
讲师:韦玮
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)Unity(30)
本文转载自:
Unity提供了自己的XXXServer,不过大家评论好像不是很好用,主要是不支持branch等我们做项目的重要特性;他还推荐Perforce这样高大上的版本管理系统,不过都很贵。所以我还是打算使用比较习惯的SVN来管理。
需要版本管理的目录
新建一个Unity Project之后,发现产生了很多目录和文件,其中只有两个是需要版本管理的:Assets、ProjectSettings。其他的都是自动生成的:
*.csproj,*.sln这些IDE的工程文件是自动生成的;
Library,主要存的是一个本地的Cache文件,不要加到版本管理中;
Tem,这个是Build过程中产生的文件;
Unity Project Settings
为了配合SVN,需要对Unity工程做一些设置:
菜单:Edit-&Project Settings-&Editor:Version Control 选择为[Visible Meta Files];
菜单:Editor-& Project Settings-&Editor:Asset Serialization Mode选择为:[Force Text]
菜单:Edit-&Preferences -& Packages:Repository选择为[External];
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:170914次
积分:3007
积分:3007
排名:第12370名
原创:128篇
转载:28篇
(2)(15)(21)(5)(18)(12)(14)(26)(30)(3)(4)(6)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'

我要回帖

更多关于 unity svn tools 的文章

 

随机推荐