Unity 之 版本控制 使用SVN遇到的问题(检测不到.meta文件)

2021-03-11 11:03发布

Unity 使用SVN版本控制遇到的小问题:

开发中总会遇到各种小问题,,,问题虽然不大却费时费力,,,不过还好每次遇到问题都会问前辈或者上网查资料,都能学到很多平常不会出深究的东西,都会明白一些道理,有所收获,,,下面分享一下,帮各位添过的坑… …


问题描述:预制体脚本和资源丢失

遇到这样个问题:我做好了一个prefab。包含什么图片按钮和挂在上面的脚本,上传prefab和cs文件到SVN,但是别人pull下来project后发现你这个prefab的脚本是missing的。

这个就很麻烦,别人用不了你得预制体,那么对于多人开发的情况,不管是游戏资源的整合还是资源的使用,,这都是一个不能接受的事情,,, 这个问题原因就在于这就是前面提到的meta文件。Meta文件中有个重要的东西就是guid,guid是文件唯一标示,文件中的关联关系都是基于guid而不是基于文件名称和文件路径的。当一个新文件创建之后,unity会自己主动给它生成一个guid。

假设没有上传meta,所以两个project的guid不同,则关联关系自然找不到。

所以我们也必须把相应的meta文件上传。当然,假设愿意解析meta文件,然后直接改动guid就是更好的做法了。当然相对的也easy出错。

当移动或重命名资源时。确保你也对应的移动或重命名了meta文件。当脚本文件内容发生变化的时候,实际上guid是不会发生变化的。并且unity事实上并不基于文件内容增量变化的版本号管理。而是覆盖式的。


解决方法 :

1、在Uniyt里面, Edit->project settings->editor 里面设置Version Control的Model为Meta Files,表示以meta文件来记录资源版本。默认为Disabled

2、设置Asset Serialization的Mode为Force Text,表示以纯文本形式保存unity文件。Mixed和Force Binary都是二进制,不利于版本管理。

在这里插入图片描述

3、提交的时候仅提交Assets 和 ProjectSettings 两个目录下所有东西,忽略掉其他所有目录和文件

(当提交之后,别人更新下来之后用不了,,,你这边又重新提交,他那边还是更新不到,可以删除你最后修改的文件夹,重新更新,)


我的问题:SVN更新的时候检测不到.meta文件,没有上传,,,所以别人更新下来之后会有上面的问题…

(不知道为什么就是检测不到…)

在这里插入图片描述

解决方法
方法一:点击下面Non-versioned 不受版本控制的文件选择一下,,,

在这里插入图片描述

方法二:
在工程文件下:选中要提交的.meta 右键TortoriseSVN -> Add 就可以了,

在这里插入图片描述

在这里插入图片描述

这样再次上传你的项目…SVN就可以检测到了,,,

[PS:上传预制体,没有上传.meta文件,当别人更新下来之后,他的Unity会自动生成.meta文件,当你重新提交到版本库的时候,他再更新是不会有更新文件显示的,需要删除后,再次更新]


希望有遇到这类问题的童鞋可以评论,分享一下,,,若有不足,敬请指正。。。



————————————————

版权声明:本文为CSDN博主「妳是我改卟了的bug」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/Czhenya/article/details/83043688