type
status
date
slug
summary
tags
category
icon
password
最近项目里用git去rebase或者pike的时候,经常遇到预制冲突但不好处理,去github上找到了一个预制对比工具:UnityCompare,用了后发现也有痛点,得开两个项目,某条提交有冲突了,要复制另一个git版本项目的预设到我当前版本项目的工作区,很麻烦,所以自己优化了一下,可以在工作区索引某个版本某条提交的内容,有对应预制就会开始对比。

核心实现原理
- Process调Git api 获取文件内容
- 将Git版本的文件内容保存为临时文件,通过Unity AssetDatabase加载
- 对比逻辑:复用原有的 CompareUtility.ComparePrefab() 方法,修改保存的逻辑兼容git的临时实例。
- GUI 窗口,每次对比前清理旧的临时对象,关闭对比/窗口自动清理临时文件(支持手动清理)。
操作流程
打开方式Tools → Compare → Git Version Compare

git path Diagnostic是检测这个预制路径有没有问题,是否能被正确加载,一般可以不用,直接操作有问题也会控制台输出日志提示
注意事项
- 两个Git版本对比只能查看,无法修改。
- 使用版本与工作区对比,只可以修改工作区的预制体。
- 资源依赖缺失问题,临时实例根据git版本的guid查找工作区并引用,如果该版本引用了不存在于当前工作区的资源或者版本不同的资源(GUID相同但内容不同),就会出现依赖丢失,不过工具默认会开启依赖检查,统计缺失数量并列出详细位置提示。
后续我会在我的github上更新工具,有需要的可以自行下载
- Author:lzzd
- URL:https://lazy-zed.com/article/u3d_21
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!






.jpeg?table=block&id=19a85e12-7d7c-8011-89fa-fa3e60ef54a8&t=19a85e12-7d7c-8011-89fa-fa3e60ef54a8)

.png?table=block&id=19885e12-7d7c-80e0-9466-ccfdb68a297f&t=19885e12-7d7c-80e0-9466-ccfdb68a297f)
.png?table=block&id=19885e12-7d7c-8090-b2f9-d59fd470ae2a&t=19885e12-7d7c-8090-b2f9-d59fd470ae2a)