原因
在游戏制作过程,随着资源越来越多,可能存在重复的资源,也需要删除不被使用的资源,但是如果使用 Unity 的 API 去查找引用关系将会很耗时间,另外,资源都是对应使用的,比如 UI 图片只在 UI 界面上进行引用,所以不需要去查找其他地方是否引用到。
目标
实现可以自定义类别的资源清理,也可以查看资源的引用情况。
说明
为了可以快速了解 Unity 的资源使用情况,那么就需要使用多线程来进行资源文件分析。然而,Unity 的资产引用会记录在预制体或场景上,需要将序列化方式改成文本,才能采用文件解析的方式来搜索匹配资源的 GUID 信息。资源是否存在重复,根据文件流的 MD5 值来判断。
多线程的查找 GUID,参考文章《Unity 编辑器下多线程处理文件》。
源码
地址:https://github.com/akof1314/UnityAssetDanshari
使用说明
① 第一次使用时,按资源的使用环境进行分组
将路径拖到目录框,可以路径多选后再拖入。其中【公共资源目录】是用来放公共资源的路径,比如 UI 图片资源存在被多个界面引用的时候,可以快捷操作移动资源到公共目录。
② 【引用查找】功能,是对【引用目录】下的每个资源进行检查是否引用到了【资源目录】下的资源,比如 UI 界面预制引用 UI 图片
双击项,可以自动在【Project】窗口定位到资源。
③ 【检查重复】功能,是对资源文件进行 MD5 检查重复,再对重复的资源进行操作
【资源被引用查找】菜单项功能,是在【被引用查找】窗口里定位到此资源的使用情况,方便进行决定保留还是删除,注意,需要先打开了【被引用查找】窗口才可以定位到。
【仅使用此资源,其余删除】菜单项功能,将会删除其余重复的资源,并且将所有引用到这些删除资源的地方都改成引用保留的那一个。
当美术对同一资源进行切图两次,会导致文件 MD5 值不一样,就无法被工具所检测到。出现这种情况的时候,肉眼发现到两个资源其实是一样的,可以在这个窗口右上角点击【手动添加】按钮
手动进行添加资源路径,将资源文件拖动到文本框,再点击【确定】。就会自动定位到新增的数据,接着就可以按处理重复资源一样进行操作。
④【被引用查找】功能,是对【资源目录】下的每个资源进行分析,看是否被【引用目录】下的资源进行引用,比如 UI 图片被哪些 UI 界面进行引用
【删除选中资源】菜单项功能,是直接对资源进行删除,当发现没有被使用到时,可以这样快捷删除资源。
右上角【过滤为空】按钮,可以过滤显示没有被使用的资源,方便快速查看。