我们的项目使用SVN管理。这几天遇到了几个问题,攻克了一下。顺便做了一个总结。

1.关于使用SVN管理unity项目的一些设置和说明

首先在unity中进行两部操作:Edit->ProjectSettings->Editor菜单。选择Verion
Control Mode 为VisivaleMeta File。选择Asset
SeriaLization Mode 为ForceText。第一步选择外部版本号控制可见Meta文件,这样子会为Asset目录以下每一个资源创建一个.Meta文本文件,来记录unity所须要的重要信息。

重要在哪里。后面会看到。第二步是由于unity大部分文件都是二进制存储的,会频繁导致莫名其妙的冲突,会带来巨大的数据量。不能合并,另一个优点,在blame的时候比較清晰直观。

而能够merge场景带来的方便的无可计量的。文章的第二第三点环绕这个两个设置做了具体说明。

以下先谈谈SVN文件夹的创建。Window下新建的unityproject一般文件夹例如以下:

这里我们须要关心的仅仅有两个目录:Assets和ProjectSetting。前者不用多说。后者保存一些setting文件tag
layerphysics等等也是必要的。而Library不过导入资源的一个缓存,网上有说法要保留各种manager文件之类,事实上不是必需的。

是剩下的都是mono或者VS产生的不用关心的。

所以正式项目一般都是本地做好须要SVN保存的两个目录,然后上传到SVNserver,这样能够在保证不影响工作的情况下把unityproject的最小量保存。

2.两个问题:预设脚本丢失和文件移动

前面常常会出现这种情况:我做好了一个prefab。包含gameobject和挂在上面的脚本,上传prefab和cs文件到SVN,但是别人pull下来project后发现你这个prefab的脚本是missing的。这个是无比让人头疼的,又一次拖一遍的工作量是巨大的,并且又一次设置脚本參数也是一件非常头疼的事情。这个问题原因就在于这就是前面提到的meta文件。Meta文件中有个重要的东西就是guid,guid是文件唯一标示,文件中的关联关系都是基于guid而不是基于文件名称和文件路径的。当一个新文件创建之后,unity会自己主动给它生成一个guid。

假设没有上传meta,所以两个project的guid不同,则关联关系自然找不到。

所以我们也必须把相应的meta文件上传。当然,假设愿意解析meta文件,然后直接改动guid就是更好的做法了。当然相对的也easy出错。

相同的。当移动或重命名资源时。确保你也对应的移动或重命名了meta文件。当脚本文件内容发生变化的时候,实际上guid是不会发生变化的。并且unity事实上并不基于文件内容增量变化的版本号管理。而是覆盖式的。

所以官方文档提到文件的移动的时候也特别小心翼翼,直接在unity中操作是最好的方式。这里特别要说明的是git和SVN的差别,在unity中新建的文件,git会默认在本地库给你找出来,然后让你提交。而SVN则不会。须要你手动的add。假设没有选择显示meta,就悲剧了。

这里就是上文提到Verion
ControlMode选择可见meta的重要性了。

3关于场景的merge

前面我们提到了我们让资源序列化为text。相同的对一个场景进行改动。

A添加一个怪物,B添加了一棵树。

A先进行提交,B则必须进行merge。打开场景会告诉你有冲突,场景中什么都没有。

打开场景的文本格式,由于我们之前选择用text来存储资源,这时候的优点就来了。文件的text格式应该是这种:

Mine:

Middle:

Theirs:

Ok,这个显而易见了。具体的XXXX内容有兴趣的话能够具体的看看,可是我想。大多数的基于场景的merge应该仅仅合并不改动吧。所以说,对场景的改动之前还是团队内部要协商好,场景的merge费事并且不讨好。

也是刚用SVN管理unity项目,所曾经面两个问题还都被我遇到了。所幸涉及的反复工作量不大。上论坛的时候有看到这样一句话“用一个人当作SVN管理员。

全部东西都是通过这个管理员提交。

其余人仅仅能下载(没提交权限)。

改动的全部东西全部给管理员整合”。事实上也认为挺不错的,特别是项目大起来后。涉及美术策划和程序交互的时候,这个管理员既整合又优化,能够解决大量的合作问题。对项目非常有优点。

希望对用unity工作的团队有所帮助。

使用SVN管理unityproject的更多相关文章

  1. ios 开发中使用SVN管理代码

    今天新公司需要使用SVN管理代码,就在网上查看相关的资料,现在把相关用法记录下来: 1.使用的是这个软件Cornerston 网上有很多相应的下载链接,可以去查看 2.下载安装之后,首先需要添加仓库r ...

  2. 【转】SVN管理多个项目版本库

    转载地址:http://blog.163.com/zhangxuemin_zy/blog/static/10178565520115704031799/ SVN管理多个项目版本库:   安装SVN服务 ...

  3. SVN管理工具Cornerstone之:创建分支、提交合并

      创建工程的分支: 步骤: 1.选择左下角仓库repositories中的工程名->选择trunk->点击Branch->在提示框里填写分支名称create, 2.在做上角work ...

  4. 项目管理之 SVN 管理软件 CornerStone for Mac

    常用的项目管理有 Git 和 SVN.之前公司一直使用的是 Git,使用的是 SourceTree 客户端,据说 Git 比 SVN 要好,只能说各有特点吧,有兴趣的可以查看下两个的区别. 下面是学习 ...

  5. svn管理码云项目

    1.设置SVN管理项目 进入项目->管理 2.获取SVN地址 3.SVN添加项目.单击右键 -> 检出->版本库Url(这里填写svn地址)

  6. eclipse中的项目受svn管理

    1.我们在启动Eclipse的时候都会有例如以下图提示: 假设我们直接这样输入目录的名字,这个文件会在eclipse安装目录的同一级自己主动生成这样一个名字叫做njgzw的目录.接下来我们每次启动都用 ...

  7. SVN管理多个项目版本库 (windows,linux 通用)

    SVN管理多个项目版本库: . 安装SVN服务器软件,路径: C:\Program Files\Subversion . 在D盘创建svn根目录D:\SVN-CM . 在D:\SVN-CM下创建SVN ...

  8. 如何使用SVN管理我们的源代码

    今天把公司的SVN服务器配置给做了一下,根据公司部门的不同,划分了不同的访问目录,并给不同目录配置了相应的权限,算是把这份差事给干完了,但其实我对自己的工作是不满意和有遗憾的,因为目前公司的SVN服务 ...

  9. SVN 管理

    01. 源代码管理工具概述(PPT) ================================================================================ ...

随机推荐

  1. POJ 3180 The Cow Prom(SCC)

    [题目链接] http://poj.org/problem?id=3180 [题目大意] N头牛,M条有向绳子,能组成几个歌舞团?要求顺时针逆时针都能带动舞团内所有牛. [题解] 等价于求点数大于1的 ...

  2. 【KM】POJ2195/HDU1533-Going home

    //最近没什么时间quq据说长得帅的人都在切八中,然而长得丑的人只能水水裸题 [题目大意] 给出一张地图及人和房屋的位置,求出每个人回到不同房屋所具有的最小代价和. [思路] 最小权匹配,先O(n^2 ...

  3. 1.7(学习笔记)过滤器(Fliter)

    一.过滤器(Fliter)简介 过滤器是位于客户端与服务器之间的滤网,在访问资源时会经过一系列的过滤器, 满足条件则放行,不满足条件的将其拦截. 过滤器可以看做是一个特殊的Servlet,设置了过滤器 ...

  4. 【R笔记】R语言进阶之4:数据整形(reshape)

    R语言进阶之4:数据整形(reshape) 2013-05-31 10:15 xxx 网易博客 字号:T | T 从不同途径得到的数据的组织方式是多种多样的,很多数据都要经过整理才能进行有效的分析,数 ...

  5. 解决Post提交乱码问题

    在web.xml里面配置 <filter> <filter-name>charac</filter-name> <filter-class>org.sp ...

  6. 调试手机上网页 (断点 console timeline 选择dom)

    用手机看网页,越来越多,手机app套个webview的也很多,那该如何调试手机上的页面了?比如 断点,选dom,console,控制台输出,查看内存,== 嗯,万能的的chrome和safari还是帮 ...

  7. 【spring data jpa】jpa中使用in查询或删除 在@Query中怎么写 ,报错:org.springframework.expression.spel.SpelEvaluationException: EL1007E: Property or field 'goodsConfigUid' cannot be found on null 怎么处理

    示例代码如下: @Modifying @Transactional @Query("delete from GoodsBindConfigMapping gbc " + " ...

  8. WebLogic Server 12.1.2后的字符型安装模式

    weblogic Server 12.1.1全部都可以用原来方式. WebLogic Server 12.1.2后已经取消了console安装模式,目前只有gui和静默安装模式.并且安装方式下也有很大 ...

  9. 打补丁以及WebLogic Server的版本

    12.1.2开始采用了Oracle传统的opatch打补丁的方式,但在此之前,包括 10.3.x版本以及12.1.1版本还是通过bea的smart update方式来进行. smart update基 ...

  10. profiler

    推荐C++ 的profiler 用于GPU CPU 综合测试 FramePro http://www.puredevsoftware.com/ 可以在进度条上拉时间 查看GPU CPU bound