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

请添加图片描述

      • 前言
  • 【Unity 实用插件篇】| ReferenceFinder 引用查找插件,提高引擎查找使用效率
    • 一、ReferenceFinder 介绍
    • 二、使用示例
    • 三、实现方案
      • 3.1 方案选择
      • 3.2 查找及缓存
      • 3.3 界面实现
  • 总结

在这里插入图片描述


前言

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

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

一、ReferenceFinder 介绍

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

  • GitHub下载地址:ReferenceFinder
  • CSDN下载: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实现树形界面的展示。


总结

  • 使用该插件可以让我们在一个复杂的项目中快速查找某个对象的所有用到的场景及其身上的所有引用。
  • 利用好该插件不但可以提高我们查找对象引用的效率,还可以用于项目垃圾清理,更快速的处理一些废弃的资源文件。

  • 🎬 博客主页:https://xiaoy.blog.csdn.net

  • 🎥 本文由 呆呆敲代码的小Y 原创,首发于 CSDN🙉

  • 🎄 学习专栏推荐:Unity系统学习专栏

  • 🌲 游戏制作专栏推荐:游戏制作

  • 🌲Unity实战100例专栏推荐:Unity 实战100例 教程

  • 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

  • 📆 未来很长,值得我们全力奔赴更美好的生活✨

  • ------------------❤️分割线❤️-------------------------

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

请添加图片描述

资料白嫖,技术互助

学习路线指引(点击解锁)知识定位人群定位
🧡 Unity系统学习专栏 🧡入门级本专栏从Unity入门开始学习,快速达到Unity的入门水平
💛 Unity实战类项目 💛进阶级计划制作Unity的 100个实战案例!助你进入Unity世界,争取做最全的Unity原创博客大全。
❤️ 游戏制作专栏 ❤️ 难度偏高分享学习一些Unity成品的游戏Demo和其他语言的小游戏!
💚 游戏爱好者万人社区💚 互助/吹水数万人游戏爱好者社区,聊天互助,白嫖奖品
💙 Unity100个实用技能💙 Unity查漏补缺针对一些Unity中经常用到的一些小知识和技能进行学习介绍,核心目的就是让我们能够快速学习Unity的知识以达到查漏补缺

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/28098.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Premiere Pro 2023(23.5) Mac

Premiere Pro是一个业界领先的视频编辑软件,旨在帮助用户快速、高效地制作和编辑专业质量的视频内容。作为Creative Cloud套装中的一部分,Premiere Pro具有丰富的功能和工具,可应对各种视频编辑需求。 Premiere Pro的主要特点包括多个视频和音…

竹云IDaaS | 全面融合AWS Cognito

AWS Cognito组件用户池User Pool国内暂未上线,身份云IDaaS可完全替代Cognito用户池,借助身份云进行用户身份验证并融合Coginto身份池Identity Pool,实现对AWS资源的无缝安全访问。 企业面临的挑战 AWS Cognito中国站暂未提供用户池User&…

OpenCV for Python 学习第五天:图片属性的获取

上一篇博文当中,我们学习了如何获取图片的通道,我们了解了通道的分离方法split()和通道的组合方法merge()。那么我们今天就来对图片的属性做一个深入的了解。 文章目录 图片属性OpenCV中属性介绍图片属性的获取 图片属性 图片属性是指描述和定义一张图片…

数字IC后端设计实现中的Post-mask ECO应该怎么做?

在数字IC后端设计实现中,我们经常会涉及到芯片需要做Function ECO。常见的Function ECO可以分为pre mask ECO和post mask ECO两种。因此,作为一个数字IC后端工程师,必须熟练掌握这两种Function ECO的实现流程及其实现技巧。 两者的区别在于&…

SQL-每日一题【585.2016年的投资】

题目 Insurance 表: 请你编写一个 SQL 查询,报告 2016 年 (tiv_2016) 所有满足下述条件的投保人的投保金额之和: 他在 2015 年的投保额 (tiv_2015) 至少跟一个其他投保人在 2015 年的投保额相同。他所在的城市必须与其他投保人都不同&#…

【Spring——Spring的基础与创建】

目录 🍧1. 什么是 Spring ? 🫖1.1 容器 🍙1.2 IoC 🥽1.3 汽车类——传统写法 🍘1.4 汽车类——IoC 写法 🌭2. 配置 maven 国内源 🌮2.1 在设置中勾选文件 🍤2.2 在…

自动化测试selenium(1)

自动化测试📪selenium 自动化测试📪selenium自动化测试📑selenium定位元素📍 实战测试百度搜索🔍安装测试环境Idea中进行自动化脚本编写打开网页:实现搜索功能:浏览器清空效果clear()&#xff1…

使用typora+PicGo+Gitee简单实现图片上传功能

本文通过配置PicGoGitee来实现typora图片上传功能,系统是window 注意下载的清单有:PicGo,node.js,配置有:PicGo,node.js,gitee,typora 看着复杂实际上并不难,只是繁琐&am…

基于时域特征和频域特征组合的敏感特征集,再利用CNN进行轴承故障诊断(python编程)

1.文件夹介绍(使用的是CWRU数据集) 0HP-3HP四个文件夹装载不同工况下的内圈故障、外圈故障、滚动体故障和正常轴承数据。 2.模型 按照1024的长度分割样本,构建内圈故障、外圈故障、滚动体故障和正常轴承样本集 2.1.计算11种时域特征值 # 计…

专题-【线索二叉树】

15年三-1) 20年一-11)

MYSQL表操作(DML,DDL)

建表并插入数据: mysql> create table worker(-> dept_id int(11) not null,-> emp_id int (11) not null,-> work_time date not null,-> salary float(8,2) not null,-> poli_face varchar(10) not null default 群众,-> name varchar(20) …

【云原生】k8s图形化管理工具之rancher

前言 在前面的k8s基础学习中,我们学习了各种资源的搭配运用,以及命令行,声明式文件创建。这些都是为了k8s管理员体会k8s的框架,内容基础。在真正的生产环境中,大部分的公司还是会选用图形化管理工具来管理k8s集群&…