Unity3d工程版本控制

转载:http://blog.csdn.net/book_longssl/article/details/44055475



转一个别人的翻译:
算是从unity3d官方网站上的翻译,如果你没有看到,可以看下,这个也是我自己碰到比较麻烦的事情,经常windows下提交,然后mac下更新下去一堆关联没了,有些可以reimport可以变好,有些要重新关联,麻烦的很,因为我们漏了一些东西没有提交到版本控制中。



    • 在unity3d中建立一个项目,如:InitialUnityProject,你可以加入一些assets的package或者放到以后加也没关系,我一般是刚开始是空的项目,空的场景,然后保存,一些asset可以在用到的时候选择性的添加,不然一堆东西看着也是麻烦的
    • Edit->Project Settings->Editor,选择Enable, 我在4.3.1的时候,安装了默认是disable的,这里要开起来,这样你的asset每个就会有meta 文件生成,大家可以用ultraedit等打开看下里面的东西,注意这个文件最好生成后不要自己去修改和删除,提交到svn即可,这个文件是文本,svn可以merge的
    • 退出unity3d,当然你可以保存你的空场景
    • 删除Library下的所有文件和目录,不过以下的文件要保留,其实也就是一些配置的东西:
      • EditorBuildSettings.asset
      • InputManager.asset
      • ProjectSettings.asset
      • QualitySettings.asset
      • TagManager.asset
      • TimeManager.asset
      • AudioManager.asset
      • DynamicsManager.asset
      • NetworkManager.asset
      • 不过在mac下面比较搞笑的是,它不会自动生成cache目录,他会生成其他的如preview之类的,但cache不会,你如果reimport,则他会报错,说不能从temp复制到cache.搞不清楚他自己为啥不创建,怀疑写程序的人有点想当然了,没判断目录是否存在吧。所以在mac下,自己要创建下cache目录,不然你报错可能不知道怎么回事情。
    • 把项目文件夹Import到svn服务器上,命令行如下:
      svn import -m"Initial project import" InitialUnityProject svn://my.svn.server.com/MyUnityProject
    • 你可以从svn 服务器上check out出来整个项目,任何组内的开发人员都可以
      svn co svn://my.svn.server.com/MyUnityProject
      看看所有用到的Assets下面的文件是否都已经在版本控制下了
    • 建议:可以为Library设立ignore ,如果用命令行的话svn propedit svn:ignore MyUnityProject/Library
      svn 会打开一个文本编辑器,添加所有除了下面文件外的目录和文件到这个文本中
      • EditorBuildSettings.asset
      • InputManager.asset
      • ProjectSettings.asset
      • QualitySettings.asset
      • TagManager.asset
      • TimeManager.asset
      • AudioManager.asset
      • DynamicsManager.asset
      • NetworkManager.asset
    • 当用unity3d打开项目的时候,一些丢失的文件会全部重新建立,如Library中被我们删除了的,如果还是不行,可以用reimport all
    • 最后就可以用svn commit了
      svn ci -m"Finishing project import" MyUnityProject

一些注意点:
(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还是比较适合个人开发者和较小团队开发,对于大型团队开发,无论是从版本管理还是代码结构上,都觉得不太方便和自然。


自:http://blog.dou.li/unity3d%E5%B7%A5%E7%A8%8B%E7%89%88%E6%9C%AC%E7%AE%A1%E7%90%86%E6%96%B9%E6%A1%88.html

Unity进行多人协作开发时必定会涉及资源、代码、配置的版本管理。这里介绍一下用SVN、GIT或其它版本管理系统进行Unity工程版本管理的方法。

新建一个Unity工程,目录结构基本是这样的:

  • Assets、Library、ProjectSettings目录
  • 运行时还会多出Temp目录
  • 如果用Monodevelop或VS打开过还会生成一堆工程文件

最终大约是这样:

2013-07-10_205342.png

Unity工程中有很多二进制文件,会频繁导致冲突,Library目录的文件在每次Unity Editor打开都会发生变化,经常会冲突。

要保证少冲突需要做到:

  1. 将创建Unity工程需要的最小量的文件提到版本库
  2. 减少二进行文件的存在

将Unity工程导入版本库,且保证最少冲突的方法

修改Unity工程的默认版本管理方式,Edit->Project Settings->Editor打开设置面板

2013-07-10_2053421.png 2013-07-10_210452.png

如图,设置Version Control的Model为Meta Files,表示以meta文件来记录资源版本。

默认为Disabled,这样在无Library目录情况下会出现各种问题(后面会讲到Library不会提到版本库)。

文本化场景文件,Edit->Project Settings->Editor打开设置面板

2013-07-10_2053422.png

设置Asset Serialization的Mode为Force Text,表示以纯文本形式保存unity文件。

Mixed和Force Binary都是二进制,不利于版本管理。

  1. 将Assets、ProjectSettings目录传到SVN、GIT或其它版本库

  2. 别人CheckOut这两目录后,第一次在Unity Editor中Open Project…后会自动生成Library目录,所以Library无需纳入版本管理

转载:http://www.cnblogs.com/wonderKK/p/4114443.html



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值