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

核心实现原理

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

操作流程

打开方式Tools → Compare → Git Version Compare
notion image
git path Diagnostic是检测这个预制路径有没有问题,是否能被正确加载,一般可以不用,直接操作有问题也会控制台输出日志提示
 

注意事项

  1. 两个Git版本对比只能查看,无法修改。
  1. 使用版本与工作区对比,只可以修改工作区的预制体。
  1. 资源依赖缺失问题,临时实例根据git版本的guid查找工作区并引用,如果该版本引用了不存在于当前工作区的资源或者版本不同的资源(GUID相同但内容不同),就会出现依赖丢失,不过工具默认会开启依赖检查,统计缺失数量并列出详细位置提示。
 
💡
后续我会在我的github上更新工具,有需要的可以自行下载
上一篇
C++中的深拷贝和浅拷贝
下一篇
Unity打字机(逐字动画)

Comments
Loading...