前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Unity 实用插件篇】| ReferenceFinder 引用查找插件,提高引擎查找使用效率

【Unity 实用插件篇】| ReferenceFinder 引用查找插件,提高引擎查找使用效率

作者头像
呆呆敲代码的小Y
发布2023-07-24 17:10:36
1.5K0
发布2023-07-24 17:10:36
举报
文章被收录于专栏:呆呆敲代码的小Y 公众号
请添加图片描述
请添加图片描述

前言

  • ReferenceFinder 是一个比较小众的插件,主要用来查找资源引用和依赖的插件。
  • 可以使用该插件很轻松的在项目中找到游戏对象精确的引用信息。
  • 简单易用、非常轻量化,只由三个脚本完成,直接将文件夹拖到项目中即可使用,本文就来介绍一下ReferenceFinder的简单使用方法!

【Unity 实用插件篇】| ReferenceFinder 引用查找插件,提高引擎查找使用效率

一、ReferenceFinder 介绍

这是一个用来查找资源引用和依赖的插件,通过缓存来保存资源间的引用信息,通过树状结构直观的展示。 由于是通过缓存进行实现的,所以在希望的到精确的引用信息时需要刷新缓存。不过由于缓存的存在,在资源改动较少的情况下,刷新速度直接将文件夹拖到项目中即可使用。


二、使用示例

正常在Unity工程中的文件通过右键只有一个调用Find References In Scene 用于在本场景中查找该物体,但是这个功能不能说一点用没有吧,只能说非常的鸡肋。

在Hierarchy窗口的搜索框输入对象的名称一样可以完成类似查找,而且Hierarchy窗口的搜索框还支持按类型和按名称查找,这样就更显得Find References In Scene一无是处了。

而导入该插件后右键对象会多出来一个选项Find References In Project ,此时右键需要查找引用的文件或文件夹,点击 Find References In Project 进行查找。

在这里插入图片描述
在这里插入图片描述

此时会弹出一个窗口,此窗口可以显示所有用到该对象的场景及该对象身上的所有引用,并且点击其结构下的脚本或文件也可以直接跳转到工程中对应对象所属的文件文木。

窗口菜单按钮含义:

菜单按钮

介绍

Refresh Data

刷新缓存

Model

切换引用和依赖

NeedUpdateState

是否需要根据当前文件的状态更新State栏。

Expand

展开列表

Collapse

折叠列表

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

第三列的State为Changed代表这个资源被修改了,Missing代表资源被删除了,No Data代表缓存中没有该资源的信息。


三、实现方案

3.1 方案选择

  1. 在每次需要查找时进行一次全局查找,保证查找的正确性。但是进行全局查找会很慢,因为查找资源依赖信息的接口GetDependencies本质上其实是对文本的查找(比如prefab中会以文本的形式记录prefab所引用资源的guiid和fileid),在不进行多线程查询优化的情况下这是一个很慢的过程,存储在机械硬盘上时会更慢。
  2. 进行一次全局查找生成缓存,在进行查找时直接读取缓存(在资源改动时会出现引用信息不准确的问题),在资源变动时需要更新缓存,保持查找的正确性,不过由于缓存的存在,在资源没有太大的改动的情况下,刷新速度较快。

  这里选择了方案二。

3.2 查找及缓存

引用信息的生成:   通过AssetDatabase.GetAllAssetPaths()获取项目中所有的资源路径。   通过AssetDatabase.GetDependencies()获取每一个资源所依赖资源的信息。   经过这两步之后就有了所有资源的依赖信息了。   通过资源的依赖信息,我们就可以生成所有资源的引用信息了。 缓存:   为了让缓存尽量的小,所以缓存只保存每个资源的guid、引用资源哈希值、依赖资源的信息。   其中引用资源哈希值时用于判断这个资源依赖的资源是否有修改,若有修改,则在刷新资源引用信息的时候需要重新读取这个资源的依赖信息,否则继续使用该信息。这个判断就是在资源改动较少时减少刷新时间的关键。   在记录依赖时,没有直接记录依赖资源的guid,而是记录了资源在缓存中下标的位置,从而进一步缩小缓存的大小。

3.3 界面实现

  主要使用了Unity自带的TreeView实现树形界面的展示。


总结

  • 使用该插件可以让我们在一个复杂的项目中快速查找某个对象的所有用到的场景及其身上的所有引用。
  • 利用好该插件不但可以提高我们查找对象引用的效率,还可以用于项目垃圾清理,更快速的处理一些废弃的资源文件。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-07-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 【Unity 实用插件篇】| ReferenceFinder 引用查找插件,提高引擎查找使用效率
    • 一、ReferenceFinder 介绍
      • 二、使用示例
        • 三、实现方案
          • 3.1 方案选择
          • 3.2 查找及缓存
          • 3.3 界面实现
      • 总结
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档