使用SVN进行Unity3d版本管理总结

用 svn 管理 unity3d 项目 对于文件的版本管理这个事,Unity默认是支持Asset Server,但也提供了对其他外部版本管理工具的支持。 Asset Server是目前Unity内部自带的资源版本管理工具,类似于我们平时所熟知的SVN,perForce。所谓外部版本管理工具的意思,就是除了Asset Server外的其他版本管理工具,比如SVN等。 使用外部版本管理软件进行管理的方法(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官方论坛上都能看到许多这方面的抱怨。例如这篇帖子 http://answers.unity3d.com/questions/19688/splitting-complex-project-into-multiple-projects就详细地描述了一个770M左右大小的项目所面临的困境。 
      其次,Unity会将项目信息以二进制格式保存在library目录中,其中被称为元数据(Meta Data)的信息更是记录了构成游戏的许多关键数据(例如 模型导入所使用的各项设置、Asset之间的引用关系等)。但由于这些数据是二进制格式,并且存放方式很不清晰,因此在使用SVN等版本管理系统时,无法采取多人修改-合并的方式。只能一个人改完后,提交整个项目,然后下一个人再改。严重阻碍了项目协同。Unity官方提供了一个收费的AssetServer,我没有用过,不知能否解决这个问题。如果我们能通过一些手段让免费的svn发挥作用,何乐而不为呢? 
      对于Unity的第一个缺点,我们暂时没有好的办法来解决,只能希望Unity后续的版本能提供模块化的支持。( Unity和ExitGame近期宣布展开合作,推出一款针对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无法管理这些数据的缺陷,我们就可以将二者配合使用,达到多人在一个项目中协同工作的效果。具体建议如下:
  1. 首先用SVN建立对整个项目文件夹的管理,包括asset和library目录以及下面的文件;
  2. 由负责集成的项目组成员管理并提交该项目更新到svn数据库
  3. 其他协作人员从svn数据库下载最新的项目文件
  4. 协作人员对自己负责的内容进行工作,然后将成果输出。输出时不要钩选依赖
  5. 将输出的unitypackage文件提交给集成人员(通过svn或者其他途径都可以)
  6. 集成人员将新的unitypackage导入项目,然后再提交到svn数据库

       如果对人员分工、规范以及项目目录规划得好的话,采用这种方式完全可以实现多人同时工作,提高项目开发和迭代的效率。

Using External Version Control Systems with Unity

Unity offers an Asset Server add-on product for easy integrated versioning of your projects. If you for some reason are not able use the Unity Asset Server, it is possible to store your project in any other version control system, such as Subversion, Perforce or Bazaar. This requires some initial manual setup of your project. In addition, moving and renaming of assets needs to be performed using your version control client and not inside Unity.

External Version Control is available in all versions of Unity.

Before checking your project in, you have to tell Unity to modify the project structure slightly to make it compatible with storing assets in an external version control system. This is done by selecting Edit->Project Settings->Editor in the application menu and enabling External Version Control support by selectingMetafiles in the dropdown for Version Control. This will create a text file for every asset in the Assets directory containing the necessary bookkeeping information required by Unity. The files will have a .meta file extension with the first part being the full file name of the asset it is associated with. When moving or renaming assets in the version control system, make sure you also move or rename the .meta file accordingly.

When checking the project into a version control system, you should add the Assets and the ProjectSettings directories to the system. The Librarydirectory should be completely ignored - when using external version control, it's only a local cache of imported assets.

When creating new assets, make sure both the asset itself and the associated .meta file is added to version control.

Example: Creating a new project and importing it to a Subversion repository.

First, let's assume that we have a subversion repository at svn://my.svn.server.com/ and want to create a project atsvn://my.svn.server.com/MyUnityProject. Then follow these steps to create the initial import in the system:

  1. Create a new project inside Unity and lets call it InitialUnityProject. You can add any initial assets here or add them later on.
  2. Enable Meta files in Edit->Project Settings->Editor
  3. Quit Unity (We do this to assure that all the files are saved).
  4. Delete the Library directory inside your project directory.
  5. Import the project directory into Subversion. If you are using the command line client, this is done like this from the directory where your initial project is located:
    svn import -m"Initial project import" InitialUnityProject svn://my.svn.server.com/MyUnityProject
    If successful, the project should now be imported into subversion and you can delete the InitialUnityProject directory if you wish.
  6. Check out the project back from subversion
    svn co svn://my.svn.server.com/MyUnityProject
    And check that the Assets and ProjectSettings directory are versioned.
  7. Open the checked out project with Unity by launching it while holding down the Option or the left Alt key. Opening the project will recreate the Librarydirectory in step 4 above.
  8. Optional: Set up an ignore filter for the unversioned Library directory:
    svn propedit svn:ignore MyUnityProject/
    Subversion will open a text editor. Add the Library directory.
  9. Finally commit the changes. The project should now be set up and ready:
    svn ci -m"Finishing project import" MyUnityProject

Unity3D版本管理工具 立即下载

相关推荐

从零到一:微信小程序Camera组件实现高效连续扫码的实战解析

本文详细解析了如何利用微信小程序Camera组件实现高效连续扫码功能,适用于零售仓储、物流配送等场景。通过优化扫码核心机制、防抖处理和图像增强技术,开发者可以突破官方API限制,打造媲美专业扫码枪的流畅体验。文章还提供了性能基准测试和高级功能扩展方案,助力企业提升操作效率。

weixin_29015051的博客 579

Unity 同一局域网内的电脑 简单的部署 git托管

Unity项目 进行git托管 首先安装Git, BeyondCompare,Git Extensions(所有电脑) 开始配置: Git Extensions  Settings 设置 .填写相应的 User name . User email .Editor 选择GitExtension.exe的安装文件路径 .Mergetool 选择BeyondCompare4 .P

Scarlett的博客 1635

ZYNQ Linux环境下PS端I2C驱动OV5640摄像头全流程解析

本文详细解析了在ZYNQ Linux环境下,通过PS端I2C驱动OV5640摄像头的完整流程。内容涵盖从Vivado硬件配置、PetaLinux系统构建、设备树节点添加,到用户空间I2C编程与寄存器配置实战,并提供了关键的调试技巧与常见问题排查方法,帮助开发者快速实现嵌入式视觉应用的传感器配置。

vulkan6gpu的博客 853

Unity使用SVN管理项目

在Unity菜单栏选择  “Edit” -> “Project Setting” -> "Editor" 设置如下 然后打开工程目录,会发现多了许多  .meta  的文件,说明设置成功,关闭Unity,删除 Library文件夹,然后将 Assets文件夹和 ProjectSettings文件夹复制到一个文件夹中,将该文件夹上传到SVN服务器即可,其他文件不需要使用,

lq 1976

Docker深度详解:从原理到实践的全方位指南

本文深入解析了Docker容器化技术的核心原理与实战应用。主要内容包括:1) Docker核心架构与优势,对比容器与虚拟机的关键差异;2) 企业级部署方案,涵盖离线安装与多镜像源配置;3) 高级镜像构建技术,如参数化构建、缓存优化及安全扫描;4) 容器生命周期管理,包括健康检查、资源限制及数据持久化方案。文章提供了丰富的代码示例和生产级配置建议,如使用Trivy进行安全扫描、精确控制容器资源等技术细节,帮助开发者全面掌握现代容器化技术。

weixin_42593797的博客 1280

深入剖析:功率放大电路设计精髓——从理论到实践

输入信号首先被调制(通常是PWM脉宽调制)成高频开关信号,驱动功率开关管(MOSFET),再通过LC低通滤波器滤除高频分量,还原出放大的音频信号。在靠近功放板电源引脚处放置足够容量的电解电容(如100uF - 1000uF)和高频瓷片电容(如0.1uF)并联进行电源去耦,抑制低频和高频干扰,防止低频振荡(Motorboating)和高频自激。,堪称电子世界里的“能量转换器”。当输入信号在零附近(即两个器件切换导通的区域)时,由于器件的开启电压(Vbe或Vgs)不为零,输出波形会出现明显的衔接不流畅的失真。

Zihan2558的博客 1692

Unity3D-RPG项目实战(2):使用SVN管理Unity项目

Unit3D项目使用SVN作为版本管理时需要注意的事项。

景夫的博客 1万+

Linux内存从0到1学习笔记(10.1 BugsShooter之cma配置过小导致页迁移繁忙而内存申请失败)

通过向武神讨教,顺便记录cma内存有空间但页繁忙(页正被访问,无法迁移)迁移不了导致cma内存分配失败的排查过程。

从0到1,突破自己 1万+

Unity版本控制之SVN的使用

一、SVN简介与安装 SVN是一种版本控制系统,我们现在使用的TortoiseSVN是一种SVN版本控制的客户端程序。TortoiseSVN客户端安装包可以在公司服务器上找到下载,也可以从官网下载,官方下载地址为:https://tortoisesvn.net/downloads.html,根据自己电脑上的系统类型,选择下载32-bit或者64-bit的安装包即可。双击下载下来的安装程序默认安装即可。 如何检查某台电脑上是否已经安装了SVN客户端了呢? 首先打开电脑的文件资源管理器(可以任意找到一个文件夹双

他在试图用代码书写这个世界,字里行间温柔尽显。勿忘初心,努力做有价值的技术文章。 3619

【乐企文件生成工程】关于乐企文件生成工程的详细介绍

发票文件生成方式有两种思路:1、根据已有的OFD模板,动态替换ofd模板内容;之后将ofd转pdf(局限:单行问题不大)详情可以在此处了解2、根据html模板动态占位:该工程就是这种方式 ,目前效果良好,可看下图。拿去即用的源码!无任何保留,当然也并不是所有票种都支持(时间有限、精力有限、已经连着转了,要冒烟了…)

九七的博客 2030

手把手教你学AUTOSAR(13.1)--基于 AUTOSAR 的开发实战实例(一)

通过上述几个基于 AUTOSAR 的开发实战实例,你可以全面了解如何从需求分析、系统设计、软件开发、集成测试到部署和验证等多个环节进行 AUTOSAR 系统的开发。这些实例不仅涵盖了不同的应用场景,还提供了具体的代码实现和技术细节,帮助你更好地应用 AUTOSAR 标准。

MHD0815的博客 1195

SVN hook 检查 Unity 提交时检查 meta 文件

在项目中经常会出现只提交了资源文件或 .meta 文件、漏了另一个文件的情况,这会导致其他人更新仓库并打开 Unity 后,本地出现 Unity 自动生成的 .meta 文件或提示缺失资源文件的报错。Unity 会将 Assets 目录下的所有文件创建文件名 + .meta 的文件,存储文件相关的配置。尽可能少的依赖,这可以大大减少部署时的麻烦,特别是在客户端。/data/svn_client_check 目录ls。提交时同时检查缺失的 .meta 文件与资源文件。可以在服务器的钩子文件。

caoquanwen的博客 752

AgentScope 2.0 API完全指南:构建企业级AI智能体应用的技术实践

本文系统梳理AgentScope 2.0框架的完整API体系,涵盖智能体核心引擎、统一模型适配层、工具系统、消息协议、权限控制与工作空间管理等七大核心模块。通过深入的源码级分析与架构图示,详细解读Agent类的推理-行动循环、ChatModelBase的多模型抽象、Toolkit的工具管理机制、ContentBlock的多模态内容表达、PermissionEngine的安全决策流程,以及Local/Docker/E2B三种工作空间实现。文章还提供了智能客服系统的完整实战案例,展示从自定义工具开发到流式服务部

program哲学 405

unity3d使用svn进行版本管理

svn只需递交Assets目录和ProjectSettings目录,Assets目录下的所有meta文件也是需要递交的 修改Unity工程的默认版本管理方式,Edit->Project Settings->Editor打开设置面板 修改Version Control下的Mode选项 修改Asset Serialization下的Mode选项,修改后如下图 ...

测试 165

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Unity3D中的svn相关点

今天开始重新拾起Unity3D,在本机上进行版本管理的时候,发现

道心惟纯 2336

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

unity3d研究之版本管理(SVN)

转:http://blog.dou.li/ Unity进行多人协作开发时必定会涉及资源、代码、配置的版本管理。这里介绍一下用SVN、GIT或其它版本管理系统进行Unity工程版本管理的方法。 新建一个Unity工程,目录结构基本是这样的: Assets、Library、ProjectSettings目录运行时还会多出Temp目录如果用Monodevelop或VS打开过还会生成一堆

GameMonkey 1968

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

关于Unity3D中的版本管理

使用Unity3D也有一段时间了,由于团队一直使用SVN进行版本管理,现总结一下: (1) Unity3D的二进制资源必须加锁进行版本控制,因为它没办法merge; (2) Unity3D自己产生的C#工程相关文件,包括VS产生或者Mono产生的,都不需要归入版本控制; (3) 在新加入项时,Unity3D会产生一个同名的.meta文件,这个文件记录了此项一个唯一的64位的guid,这个文件

道心惟纯 1万+

Unity在SVN版本管理里的配置

新项目要使用SVN来管理unity项目,而之前更多的是使用AssetServer来管理的,为此查了网上各位大牛们的经验,在这里记录下。 =================================================================================================================================

watson.wang.sz 1837

Unity3D多人协作开发环境搭建

多人协作 说到多人协作开发,大家都会想到要使用版本控制工具来管理项目,当然最常用的要数SVN和Git了,但是SVN管理Unity3D项目的确有一些不尽人意的地方。 比如:两个人修改了同一个场景,SVN更新时就不能合并,还有在Unity Editor 中SVN不可视化,不友好! 我们团队初期也是使用SVN进行提交和更新。记录一下我们一路走来的历程…… 写作环境 本文写作环境在Unity 4...

weixin_34237596的博客 1182

如何用 svn 管理 unity3d 项目

因为svn用惯了, asset server还是收费的,所以这个版本还是使用svn来管理unity3d的工程 需要版本管理的目录 新建一个Unity Project之后,发现产生了很多目录和文件,其中只有两个是需要版本管理的:Assets、ProjectSettings。其他的都是...

chuze5190的博客 235

Unity3D 多人协作开发 环境搭建 笔记(场景合并)

http://www.cnblogs.com/zhaoqingqing/p/3371120.html 说到多人协作开发,大家都会想到要使用版本控制工具来管理项目,当然最常用的要数SVN和Git了,但是SVN管理Unity3D项目的确有一些不尽人意的地方,比如:两个人修改了同一个场景,SVN更新时就不能合并,还有在Unity Editor 中SVN不可视化,不友好! 我们团队初期也是使...

weixin_30596343的博客 288
上一篇: unity3d网址
下一篇: unity3d内嵌IAP
programmerboymxd
博客等级 码龄18年 31粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值