Unity项目ScriptableObjects推GitHub后其他机器被删,新建也遭删除
解决Unity项目ScriptableObjects拉取后被删除的问题
排查方向与解决步骤
检查.gitignore规则
打开项目根目录的.gitignore文件,排查是否存在误匹配ScriptableObjects(SO)的规则,比如*.asset(SO默认以.asset格式存储)或错误的路径忽略条目。确保所有SO文件及对应的.meta文件都未被规则排除。修复.meta文件关联
Unity资源依赖同名的.meta文件进行版本跟踪,移动SO时必须同步移动对应的.meta文件:- 回退到确认正常的版本后,检查本地所有SO的
.meta文件是否存在且与文件一一对应; - 执行以下Git命令同步跟踪状态:
git add -A git commit -m "Fix SO meta file tracking" git push - 其他机器拉取代码前,删除项目根目录的
Library文件夹(Unity缓存目录),再重新拉取,让Unity重新生成资源映射。
- 回退到确认正常的版本后,检查本地所有SO的
恢复Git标记为删除的SO文件
执行git status查看是否有SO文件被标记为deleted,如果有,通过以下命令恢复:git checkout HEAD -- path/to/your/target-so.asset恢复后确认对应的
.meta文件也被恢复,再提交推送。验证Unity版本控制设置
打开Unity编辑器,进入Edit > Project Settings > Version Control:- 将
Mode设置为Visible Meta Files; - 将
Asset Serialization设置为Force Text;
这两个设置能确保Git正确跟踪资源的.meta文件和序列化信息。
- 将
测试新建SO的跟踪状态
新建一个测试SO,保存后确认生成了对应的.meta文件,执行git add添加该文件及.meta,提交推送后在其他机器拉取,验证是否仍会被删除。若问题持续,重点排查.gitignore规则和Unity版本控制设置。
内容的提问来源于stack exchange,提问作者user24348428
相关产品推荐
相关产品推荐

