Unity *.meta 文件、SVN 和外部共享存储库

Unity *.meta files, SVN, and External Shared Repositories

我有几个 Unity Pro (4.5),所有这些项目都需要共享一个通用的 SVN 资源库。这主要包括脚本,但也可能有其他资产。

最初,我通过在适当的目录上使用 svn:external 属性来设置它。但是,这不起作用。因为 *.meta 文件是按项目生成的。由于这个原因,我无法在共享存储库中提交 *.meta 文件。这最终会导致资产引用被破坏。

如何正确地在多个 Unity 项目之间创建共享外部存储库? Unity 处理 *.meta 文件的方式是否可行?

元文件是资产引用所必需的。他们为资产提供他们的 guids,这些 guids 用于场景和预制件等的序列化。因此,如果您将场景或预制件放入存储库中,那么每个引用的资产也应该提交其元文件。如果您不这样做,那么 Unity 将为您的资产生成新的图元文件并为它们提供随机 guid,从而破坏所有引用。

因此您的公共存储库必须包含它包含的所有资产的图元文件。如果您从一开始就没有这样做,那么您应该现在就开始。打开其中一个项目,修复任何损坏的引用并提交所有图元文件以及对属于公共存储库的对象的任何其他更改。然后,在使用公共存储库的每个其他项目中拉取并覆盖所有内容。如果现在出现任何损坏的参考,那么它们应该只来自本地场景。也修复这些问题。

现在,对于您的下一个项目,您可以简单地提取所有内容,包括图元文件。 Unity 将使用图元文件告诉它使用的 guid,并且所有引用都将完好无损。