• Unity 3D的版本控制问题


    译林军 李慧爽|2014-02-13 11:21|9231次浏览|Unity(286)移动应用(19)技术开发(9)0

    Unity中的源码控制并非和其他开发环境一样简单。我们可以从开发和美术两个角度讲解这个问题。

    使用源码控制主要产生两个问题:

    1.Unity中的文件默认存储为二进制。

    大多数的开放源码的版本控制解决方案无法处理二进制文件。你可以在系统中存储二进制文件,但无法将他们合并。Diffs也无法和大多数源码控制系统一起运行。这意味着,如果两个开发人员更改了相同的场景或预制,就更不可能将两个版本合并了。你只能删除一个版本或者重新设定另一个版本的变化。

    2.巨大的数据量

    Unity中的项目往往因为如纹理,声音等二进制文件而变得过大。像Git这样的远程版本控制系统,在网络上同步数据量是相当耗时的。此外,因为在大多数系统中都不能正确存储有二进制数据的diffs文件,每一个变化都是分开存储的。这样一来,存储库的大小急剧增加。

    使用Git的版本/源码控制

    第一步是在Unity中把元文件,预制和场景存储为文本文件。

    需要更改两处设置。

    Edit→Project Settings→Editor:

    Set Version Control Mode to“Meta Files” Set Asset Serialization Mode to“Force Text”

    这是在Unity中把所有元文件,预制和场景存储为文本文件。

    序列化的预制结构看起来是这样:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    YAML 1.1
    %TAG !u! tag:unity3d.com,2011:
    — !u!1 &100000
    GameObject:
    m_ObjectHideFlags: 0
    m_PrefabParentObject: {fileID: 0}
    m_PrefabInternal: {fileID: 100100000}
    serializedVersion: 4
    m_Component:
    – 4: {fileID: 400000}
    – 33: {fileID: 3300000}
    – 65: {fileID: 6500000}
    – 23: {fileID: 2300000}
    m_Layer: 0
    m_Name: prefab_cube
    m_TagString: Untagged
    m_Icon: {fileID: 0}
    m_NavMeshLayer: 0
    m_StaticEditorFlags: 0
    m_IsActive: 1

    这个结构包含对象及其属性作为一对键和值。

    现在,如果有人更改项目,不同版本可能会自动合并(或者手动合并,因为该结构是可读格式)。

    那么,版本需要什么呢?

    Unity的项目结构是这样的:

    1
    2
    3
    4
    5
    <ProjectRoot>
    —| Assets
    —| Library
    —| Project Settings
    —| Temp

    在源码控制中不需要Temp文件夹,所以我们可以忽略它。

    Library文件夹包含数据的信息,存储在Assets文件夹中。我们也可以忽略它。

    我们使用在项目的根目录中的.gitignore文件,让git忽略这些目录。

    该文件是一个简单的文本文件(没有扩展名),包含以下内容:

    1
    2
    /Library
    /Temp

    Assets

    我们现在还不确定如何最好地把像assets这样的二进制文件归入到源码控制方案中。

    令人欣慰的是,我们已经把项目工作拆分成系统开发和美术两方面。

    至于git,我们把Assets文件夹中包含的大多数元素删除掉。我们使用一个子目录,虽然它包含了被称之为“GameSystem”的测试室场景,脚本和预制。

    所有其他assets如纹理,模型,声音等放入Assets文件夹中另一个子文件夹中。我们称之“GameAssets”。 从AssetStore中获取的Assets也放置在Assets文件夹中,但不同步这些assets。

    在Asset文件夹中的.gitignore文件是这样的:

    1
    2
    3
    /**
    !/GameSystem
    !/.gitignore

    在Assets文件夹中,我们把git中的一切都删除,除了GameSystem文件夹和.gitignore文件夹。

    这样,我们将删除版本控制中像艺术资产这样的大数据块,也删除assetstore中的数据包。

    我们仍然试图找出如何最好地处理在源码控制环境中的资产文件。

    欢迎大家一起分享你们的开发使用心得!

    原文链接:http://www.bitsalive.com/unity-3d-and-version-control/

  • 相关阅读:
    loadrunner 11安装教程
    测试用例
    软件测试分类
    软件测试模型
    VMware Workstation安装Red hat7.0联网问题总结
    Python网络编程基础pdf
    Python数据可视化编程实战pdf
    Python数据分析实战
    Python数据科学手册
    Python入门经典. 以解决计算问题为导向的Python编程实践
  • 原文地址:https://www.cnblogs.com/forlove/p/3785298.html
Copyright © 2020-2023  润新知