首页 > 解决方案 > Unity 到 Git:多个问题

问题描述

我已经面对我的屏幕超过 12 小时只是因为这么多问题,我有一个 Unity 项目有大量文件(主要是因为有超过 3000 个图块),将它带到 Git 是一个巨大的问题. 我承认我只有 13 岁。老了,我仍然开始了解 Git

第一:当我使用相同的过程将我的巨大归档项目完全转移到一个存储库中时,不得不等待大量的时间,项目内的文件夹(例如:资产、库等)不会出现,只有那些文件夹之外的文件,如 csproj。文件。

第二:我不得不决定只传输 Assets 文件夹。有两种选择,第一种是在项目中使用 git 并在 Assets 文件夹中“git add”,缺点是有时会花费大量时间来加载文件。第二个是在 Assets 文件夹中使用 git 来“git add --all”,缺点是它不会被我安装的名为 Github for Unity 的新包检测到https://assetstore.unity.com/packages/ tools/version-control/github-for-unity-118069也无法被我的 IDE Jetbrains Rider 检测到。

请我已经哭了半个小时,并想放弃我的整个编程生涯,所以如果有人可以回答,那将非常感谢你的帮助。谢谢你。

标签: gitunity3d

解决方案


虽然我在将项目转移到 git 方面有过如此糟糕的经历,并且我也做了一些研究,但以下是我的解决方案:

  1. 如果你想使用普通的 git,比如使用 GitHub 来存储你的项目,你应该小心。第一件事是您应该使用.gitignore来选择忽略哪些以及提交哪些,这非常重要。
    但是,你会遇到另一个致命的问题,当你的项目越来越拥抱,我的意思是你的场景中有这么多的游戏对象,如果你有大量的 3D 模型,这种情况会更严重,你会发现场景文件非常大,我的文件接近 8Gb。然后你发现你应该需要解决Git中巨大文件的可怕兼容性,using Git LFS to solve this, and you also need to expect that your supplier do not set a threshold in file size when transferring one single file to git server.其次,由于您使用的是普通的git,而Unity自己处理和格式化的文件如此之多,而git无法轻松正确地解析文件内容,这将导致您的场景中的每一个简单修改都会让git认为这是一个新文件,尽管您可能只更改游戏对象的名称。此操作的可怕后果是您的 git repo 将消耗大量文件存储空间(您会注意到 .git 文件夹将消耗大量存储空间)。当你想与你的朋友分享这个 repo 时,它会变成一场灾难。

所以这是我个人推荐的第二种解决方案。

  1. 你可以使用官方版的git解决你的问题:Plastic SCM. Unity 正式使用这个 git 供应商来控制版本。您仍然可以将Plastic SCM其用作替代版本控制工具,(就像评论中提到的那样,PlasticSCM 不是基于 Git,对此感到抱歉。)它具有默认值.gitignore(在这种情况下,我们用于ignore.conf控制忽略),因此您不需要需要打扰,就像我应该上传哪些不应该。同时,它可以正确分析每个 Unity 生成文件的正确文件类型。因此,当您更改场景中游戏对象的名称并保存时,整个场景文件将不再被视为新文件,git 仅更新此文件中的一行。

但要提一下,我推荐Plastic SCM作为版本控制的方式只是因为它可以正确分析 Unity 生成的文件类型,并不意味着它是完美的。我在使用时遇到了一些奇怪的错误,因为它只是在 beta 测试期间,但这只是另一个故事。


推荐阅读