【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的知识以达到查漏补缺

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Java】Java实现微信小程序发送服务通知

文章目录 前言一、文档来源二、JAR包引入三、后端工作四、编写配置文件配置一:WxConfig配置二:WxProperties 五、代码编写 前言 在上个月接到一个需求,大概是需要计算一条数据的最大办理时间从而发送任务超期的微信小程序服务通知&#xff0…

IDDR和ODDR

IDDR D:输入双倍速率数据(IOB输入,且数据在时钟的上升沿和下降沿都会发生切换,即一个时钟周期发送2bit数据) CE:时钟使能信号(高有效) C:时钟信号 S,R&#x…

黑马大数据学习笔记2-HDFS基本操作

目录 进程启停管理一键启停脚本单进程启停 文件系统操作命令HDFS文件系统基本信息介绍创建文件夹查看指定目录下内容上传文件到HDFS指定目录查看HDFS文件内容下载HDFS文件拷贝HDFS文件追加数据到HDFS文件HDFS数据移动HDFS数据删除其他命令HDFS WEB浏览 HDFS权限修改权限 https:…

Spark MLlib快速入门(1)逻辑回归、Kmeans、决策树、Pipeline、交叉验证

Spark MLlib快速入门(1)逻辑回归、Kmeans、决策树案例 除了scikit-learn外,在spark中也提供了机器学习库,即Spark MLlib。 在Spark MLlib机器学习库提供两套算法实现的API:基于RDD API和基于DataFrame API。今天,主要介绍下Data…

FPGA实验四:交通灯控制器设计

目录 一、实验目的 二、设计要求 三、实验代码 1.design source文件代码 2.仿真文件代码 3.代码原理分析 四、实验结果及分析 1、引脚锁定 2、仿真波形及分析 3、下载测试结果及分析 五、实验心得 1.解决实验中遇见的问题及解决 2.实验完成的心得 一、实验目的 &a…

Linux使用HTTP隧道代理代码示例模版

下面是一个在Linux上使用HTTP隧道代理的代码示例模板,可以根据自己的实际情况进行修改和配置: #!/bin/bash# 配置代理服务器信息 proxy_server"代理服务器IP或域名" proxy_port"代理服务器端口号" proxy_username"代理服务器用…

《动手学深度学习》——线性神经网络

参考资料: 《动手学深度学习》 3.1 线性回归 3.1.1 线性回归的基本元素 样本: n n n 表示样本数, x ( i ) [ x 1 ( i ) , x 2 ( i ) , ⋯ , x d ( i ) ] x^{(i)}[x^{(i)}_1,x^{(i)}_2,\cdots,x^{(i)}_d] x(i)[x1(i)​,x2(i)​,⋯,xd(i)​…

《实战AI低代码》:普元智能化低代码开发平台发布,结合专有模型大幅提升软件生产力

在7月6日举办的“低代码+AI”产品战略发布会上,普元智能化低代码开发平台正式发布。该平台融合了普元自主研发的专有模型,同时也接入了多款AI大模型的功能。它提供了一系列低代码产品,包括中间件、业务分析、应用开发、数据中台和业务流程自动化等,旨在简化企业的复杂软件生…

Nginx学习

文章目录 Nginx什么是NginxLinux安装与配置Nginx编译安装Nginxnignx使用nginx默认首页配置案例 localtion的匹配规则Nginx虚拟主机基于多IP的虚拟主机基于多端口的虚拟主机基于域名的虚拟机主机 反向代理案例①案例② 负载均衡案例①案例②分配策略 动静分离案例 配置Nginx网关…

文心一言 VS 讯飞星火 VS chatgpt (58)-- 算法导论6.4 2题

文心一言 VS 讯飞星火 VS chatgpt (58)-- 算法导论6.4 2题 二、试分析在使用下列循环不变量时,HEAPSORT 的正确性:在算法的第 2~5行 for 循环每次迭代开始时,子数组 A[1…i]是一个包含了数组A[1…n]中第i小元素的最大…

【Distributed】zookeeper+kafka的应用及部署

文章目录 一、zookeeper1. zookeeper的概述1.1 Zookeeper 定义1.2 Zookeeper 工作机制1.3 Zookeeper 特点1.4 Zookeeper 数据结构1.5 Zookeeper 应用场景1.6 Zookeeper 选举机制第一次启动选举机制非第一次启动选举机制选举Leader规则 2. 部署 Zookeeper 集群2.1 安装前准备2.2…

day52

思维导图 比较指令结果的条件码 练习 汇编实现1-100的累加 .text .global _strat _start: mov r0,#0mov r1,#0 add_fun:add r0,r0,#1cmp r0,#100addls r1,r1,r0bls add_fun .end

机器学习技术(三)——机器学习实践案例总体流程

机器学习实践案例总体流程 文章目录 机器学习实践案例总体流程一、引言二、案例1、决策树对鸢尾花分类1.数据来源2.数据导入及描述3.数据划分与特征处理4.建模预测 2、各类回归波士顿房价预测1.案例数据2.导入所需的包和数据集3.载入数据集,查看数据属性&#xff0c…

JVM重点整理

一、虚拟机架构图 二、类加载过程 类加载器的作用:负责把class文件加载到内存中 类加载过程: 加载: 通过类的全限定名获取此类的二进制字节流文件的编码结构---->运行时的内存结构内存中生成一个class对象 链接: 验证&#x…

【网络】socket——预备知识 | 套接字 | UDP网络通信

🐱作者:一只大喵咪1201 🐱专栏:《网络》 🔥格言:你只管努力,剩下的交给时间! 在前面本喵对网络的整体轮廓做了一个大概的介绍,比如分层,协议等等内容&#x…

【QT】元对象系统学习笔记(一)

QT元对象系统 01、元对象系统1.1、 元对象运行原则1.2、 Q_OBJECT宏1.3、 Qt Creator启动元对象系统1.4、 命令行启动元对象(不常用) 02、反射机制2.1、 Qt实现反射机制2.2、 反射机制获取类中成员函数的信息2.1.1、 QMetaMethon类2.1.2、QMetaObject类 …

【UE4 塔防游戏系列】07-子弹对敌人造成伤害

目录 效果 步骤 一、让子弹拥有不同伤害 二、敌人拥有不同血量 三、修改“BP_TowerBase”逻辑 四、发射的子弹对敌人造成伤害 效果 步骤 一、让子弹拥有不同伤害 为了让每一种子弹拥有不同的伤害值,打开“TotalBulletsCategory”(所有子弹的父类…

架构训练营:3-3设计备选方案与架构细化

3架构中期 什么是备选架构? 备选架构定义了系统可行的架构模式和技术选型 备选方案筛选过程 头脑风暴 :对可选技术进行排列组合,得到可能的方案 红线筛选:根据系统明确的约束和限定,一票否决某些方案(主要…

为 GitHub 设置 SSH 密钥

1. 起因 给自己的 github 改个名,顺便就给原来 Hexo 对应的仓库也改了个名。然后发现 ubhexo clean && hexo generate && hexo deploy 失败了,报错如下: INFO Deploying: git INFO Clearing .deploy_git folder... INFO …

Hive自定义函数

本文章主要分享单行函数UDF(一进一出) 现在前面大体总结,后边文章详细介绍 自定义函数分为临时函数与永久函数 需要创建Java项目,导入hive依赖 创建类继承 GenericUDF(自定义函数的抽象类)(实现…