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

444 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6月更文挑战」的第4天,点击查看活动详情

前言

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


问题描述

预制体脚本和资源丢失

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

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

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

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

当移动或重命名资源时。确保你也对应的移动或重命名了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文件,当你重新提交到版本库的时候,他再更新是不会有更新文件显示的,需要删除后,再次更新]

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