当前位置: 首页 > news >正文

Unity查找资源依赖关系

这个方法主要是发现资源乱用的情况,对应的逻辑可能要改一个才能用到自己的项目里面 

[MenuItem("Tools/Prefab/查找选中资源依赖关系", false, 0)]
    public static void FindDependencies()
    {
        foreach (var guid in Selection.assetGUIDs)
        {
            string lpath = AssetDatabase.GUIDToAssetPath(guid);
            string dirName = Path.GetDirectoryName(lpath);
            string folderName = dirName.Substring(dirName.LastIndexOf("\\") + 1);
            Debug.Log("----------------------------------------------------------------");
            GameObject go = Selection.activeObject as GameObject;
            if (go == null)
            {
                Debug.Log("选取对象出错");
                return;
            }
            string assetPath = AssetDatabase.GetAssetPath(go);
            Dictionary<string, List<ObjStruct>> dePathDic = new Dictionary<string, List<ObjStruct>> ();
            if (string.IsNullOrEmpty(assetPath))
            {
                Debug.Log("注意,这不是预制体");
                return;
            }
            //获取预制体内所有Image组件
            Image[] imgArr = go.GetComponentsInChildren<Image>();
            if (imgArr == null || imgArr.Length == 0)
            {
                Debug.Log("预制体里没有Image组件");
            }
            else
            {
                foreach (var item in imgArr)
                {
                    string path = AssetDatabase.GetAssetPath(item.sprite.GetInstanceID());
                    if (!dePathDic.ContainsKey(path))
                    {
                        dePathDic.Add(path, new List<ObjStruct> ());
                    }
                    ObjStruct objStruct = new ObjStruct();
                    if (item.sprite != null)
                    {
                        objStruct.spriteName = item.sprite.name;
                        objStruct.objName = item.transform.name;
                        dePathDic[path].Add(objStruct);
                    }
                }
            }
            foreach (var dependenciePath in AssetDatabase.GetDependencies(lpath, false))
            {
                if (lpath != dependenciePath && !dependenciePath.Contains("cs"))
                {
                    if (!dependenciePath.Contains(folderName) && !dependenciePath.Contains("UICommonRes") && !dependenciePath.Contains("Font"))
                    {
                        Debug.LogError(string.Format("资源使用不当 path = {0} 依赖 > {1}", lpath, dependenciePath));
                        if (dePathDic.TryGetValue(dependenciePath,out List<ObjStruct> list))
                        {
                            for (int i = 0; i < list.Count; i++)
                            {
                                Debug.LogError(string.Format("错误详情:对象名:{0} , Sprite名:{1}", list[i].objName, list[i].spriteName));
                            }
                        }
                    }
                    else
                    {
                        Debug.Log(string.Format("lpath = {0} 依赖 > {1}", lpath, dependenciePath));
                    }
                }
            }

            
        }
        Debug.Log("查找依赖结束");
    }

相关文章:

Unity查找资源依赖关系

这个方法主要是发现资源乱用的情况&#xff0c;对应的逻辑可能要改一个才能用到自己的项目里面 [MenuItem("Tools/Prefab/查找选中资源依赖关系", false, 0)] public static void FindDependencies() { foreach (var guid in Selection.assetGUIDs…...

【操作系统】聊聊局部性原理是如何提升性能的

对于目前数据主导的系统&#xff0c;大多数都是Java/Go 技术栈MySQL&#xff0c;但是随着时间的推移&#xff0c;数据库数据的数据量过多&#xff0c;并且会频繁访问热点数据&#xff0c;为了提升系统的性能&#xff0c;一般都是加入缓存中间件、Redis。 局部性原理 我们知道…...

多线程应用——单例模式

单例模式 文章目录 单例模式一.什么是单例模式二.如何实现1.口头实现2.利用语法特性 三.实现方式&#xff08;饿汉式懒汉式&#xff09;1.饿汉式2.懒汉式3.线程安全的单例模式4.双重检查锁5.禁止指令重排序 一.什么是单例模式 单例模式&#xff08;Singleton Pattern&#xff…...

几种在JavaScript中创建对象的方式!

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 字面量方式⭐ 构造函数方式⭐ Object.create()方式⭐ 工厂函数方式⭐ ES6类方式⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门…...

java项目mysql转postgresql

特殊函数 &#xff1a; mysql&#xff1a; find_in_set(?, ancestors) postgresql&#xff1a; ? ANY (string_to_array(ancestors,,)) mysql&#xff1a; date_format(t1.oper_time, %Y-%m-%d) postgresql&#xff1a; rksj::date to_char(inDate,YYYY-MM-DD) mysql&am…...

SpringBoot Mybatis 多数据源 MySQL+Oracle

一、背景 在SpringBoot Mybatis 项目中&#xff0c;需要连接 多个数据源&#xff0c;连接多个数据库&#xff0c;需要连接一个MySQL数据库和一个Oracle数据库 二、依赖 pom.xml <dependencies><dependency><groupId>org.springframework.boot</groupId&…...

(笔记五)利用opencv进行图像几何转换

参考网站&#xff1a;https://docs.opencv.org/4.1.1/da/d6e/tutorial_py_geometric_transformations.html &#xff08;1&#xff09;读取原始图像和标记图像 import cv2 as cv import numpy as np from matplotlib import pyplot as pltpath r"D:\data\flower.jpg&qu…...

【Flutter】Flutter 使用 fluttertoast 实现显示 Toast 消息

【Flutter】Flutter 使用 fluttertoast 实现显示 Toast 消息 文章目录 一、前言二、安装和基础使用三、不同平台的支持情况四、如何自定义 Toast五、在实际业务中的应用六、完整的业务代码示例&#xff08;基于 Web 端&#xff09;七、总结 一、前言 在这篇文章中&#xff0c;…...

nowcoder NC236题 最大差值

目录 题目描述&#xff1a; 示例1 示例2 题干解析&#xff1a; 暴力求解&#xff1a; 代码展示&#xff1a; 优化&#xff1a; 代码展示&#xff1a; 题目跳转https://www.nowcoder.com/practice/a01abbdc52ba4d5f8777fb5dae91b204?tpId128&tqId33768&ru/exa…...

TCP/IP五层模型、封装和分用

1.网络通信基础2.协议分层OSI七层协议模型TCP/IP五层/四层协议模型【重点】 3. 封装&分用 1.网络通信基础 IP地址&#xff1a;表示计算机的位置&#xff0c;分源IP和目标IP&#xff1b;举个例子&#xff1a;买快递&#xff0c;商家从上海发货&#xff0c;上海就是源IP&…...

LeetCode 面试题 01.08. 零矩阵

文章目录 一、题目二、C# 题解 一、题目 编写一种算法&#xff0c;若M N矩阵中某个元素为0&#xff0c;则将其所在的行与列清零。 点击此处跳转题目。 示例 1&#xff1a; 输入&#xff1a; [ [1,1,1], [1,0,1], [1,1,1] ] 输出&#xff1a; [ [1,0,1], [0,0,0], [1,0,1] ] 示…...

Qt应用开发(基础篇)——进度条 QProgressBar

一、前言 QProgressBar类继承于QWidget&#xff0c;是一个提供了横向或者纵向进度条的小部件。 QProgressBar进度条一般用来显示用户某操作的进度&#xff0c;比如烧录、导入、导出、下发、上传、加载等这些需要耗时和分包的概念&#xff0c;让用户知道程序还在正常的执行中。 …...

108页石油石化5G智慧炼化厂整体方案PPT

导读:原文《108页石油石化5G智慧炼化厂整体方案PPT》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。以下是部分内容,...

Codeforces 1625E2 括号树 + BIT

题意 传送门 Codeforces 1625E2 Cats on the Upgrade (hard version) 题解 首先利用栈将原始字符串转换为合法的 RBS&#xff0c;不能匹配的括号设为 ‘.’。根据匹配的括号序列构造树&#xff0c;具体而言&#xff0c;遇到左括号&#xff0c;则新建节点向下递归&#xff0c…...

PHP命令行CLI的使用

PHP命令行界面 PHP命令行界面&#xff08;CLI&#xff09;是一种使用命令行&#xff08;终端&#xff09;来运行PHP脚本的方式&#xff0c;与在Web服务器环境下运行PHP不同。CLI提供了一种与操作系统交互的方式&#xff0c;能够在命令行中直接执行PHP代码。 以下是一些与PHP命…...

近期嵌软线下笔试题记录

1、以下代码的输出结果是&#xff1f; #include <stdio.h> #include <string.h>int main() {int a,b,c,d;a 10;b a; //a先赋值给b,然后自增1c a; //a自增1后赋值给cd 10*a; //先进行运算然后a自增1printf("b,c,d:%d…...

基于MYSQL的主从同步和读写分离

目录 一.完成MySQL主从同步&#xff08;一主两从&#xff09; 1.主库配置 2.建立同步账号 3.锁表设置只读 4.备份数据库数据 5.主库备份数据上传到从库 6.从库上还原备份 7.解锁 8.从库上设定主从同步 9.启动从库同步开关 10.检查状态 二.基于MySQL一主两从配置&…...

java八股文面试[多线程]——合适的线程数是多少

知识来源&#xff1a; 【并发与线程】 合适的线程数量是多少&#xff1f;CPU 核心数和线程数的关系&#xff1f;_哔哩哔哩_bilibili 【2023年面试】程序开多少线程合适_哔哩哔哩_bilibili...

Linux系统下vim常用命令

一、基础命令&#xff1a; v:可视模式 i:插入模式 esc:命令模式下 :q &#xff1a;退出 :wq &#xff1a;保存并退出 ZZ&#xff1a;保存并退出 :q! &#xff1a;不保存并强制退出二、在Esc下&#xff1a; dd : 删除当前行 yy:复制当前行 p:复制已粘贴的文本 u:撤销上一步 U:…...

【2023】LeetCode HOT 100——链表

目录 1. 相交链表1.1 C++实现1.2 Python实现1.3 时空分析2. 反转链表2.1 C++实现2.2 Python实现2.3 时空分析3. 回文链表3.1 C++实现3.2 Python实现3.3 时空分析4. 环形链表4.1 C++实现4.2 Python实现4.3 时空分析5. 环形链表 II5.1 C++实现5.2 Python实现...

智能井盖传感器,物联网智能井盖系统

随着城市人口的不断增加和城市化进程的不断推进&#xff0c;城市基础设施的安全和可靠性变得愈发重要&#xff0c;城市窨井盖作为城市基础设施重要组成部分之一&#xff0c;其安全性事关城市安全有序运行和居民生产生活安全保障。 近年来&#xff0c;各地都在加强城市窨井盖治理…...

C语言三子棋解析

目录&#xff08;标2的是我自己写的一堆问题不知道怎么改&#xff09; 开始菜单1打印棋盘1玩家下棋1电脑下棋1判断输赢1开始菜单2打印棋盘2选择先后2玩家下棋2电脑下棋2判断输赢2完整代码文件else.h文件else.c文件test.c 开始菜单1 void menu()//打印菜单 {printf("*****…...

【Jenkins打包服务,Dockerfile报错:manifest for java : 8 not fourd】

1、问题描述 Jenkins打包服务运行dockerfile里的FROM java:8报错manifest for java : 8 not fourd Caused by: com.spotify. docker.client.exceptions.DockerException: manifest for java:8 not found2、解决方法 在网上查找许多方法后得出这是由于Docker官方已经弃用java…...

读SQL学习指南(第3版)笔记06_连接和集合

1. 连接 1.1. 笛卡儿积 1.1.1. 交叉连接&#xff08;cross join&#xff09; 1.1.2. 查询并没有指定两个数据表应该如何连接&#xff0c;数据库服务器就生成了笛卡儿积 1.1.2.1. 两个数据表的所有排列组合 1.1.3. 很少会用到&#xff08;至少不会特意用到&#xff09; 1.…...

C#学习,结构,面向对象,类

结构和类 结构是从过程化程序设计中保留下来的一种数据类型&#xff0c;类则是面向对象程序设计中最基本的、也是最重要的概念。 结构 结构是一种值类型&#xff0c;通常用来封装一组相关的变量&#xff0c;结构中可以包含构造函数、变量、字段、方法、属性、运算符、事件和…...

【PHP】文件操作

文章目录 文件编程的必要性目录操作其它目录操作递归遍历目录PHP5常见文件操作函数PHP4常见文件操作函数其他文件操作函数 文件编程的必要性 文件编程指利用PHP代码针对文件&#xff08;文件夹&#xff09;进行增删改查操作。 在实际开发项目中&#xff0c;会有很多内容&…...

科创板50ETF期权交易:详细规则、费用、保证金和开户攻略

科创板50ETF期权是指以科创板50ETF为标的资产的期权合约。科创板50ETF是由交易所推出的一种交易型开放式指数基金&#xff08;ETF&#xff09;&#xff0c;旨在跟踪科创板50指数的表现&#xff0c;下文介绍科创板50ETF期权交易&#xff1a;详细规则、费用、保证金和开户攻略&am…...

怎么把图片放大并且清晰?有详细的方法步骤

怎么把图片放大并且清晰&#xff1f;数字图像处理中的图片放大是许多行业和领域中广泛应用的一项技术。常规的放大方法通过插值或复制像素的方式增加像素数&#xff0c;但这会导致失真和模糊。无损放大是一种特殊的放大方法&#xff0c;它可以通过数学算法来增加图片的尺寸&…...

C++ 构造函数、析构函数调用虚函数

C虚函数是通过虚表实现的&#xff0c;虚函数的地址记录在需表中&#xff0c;只对象完成构造完成后&#xff0c;虚函数的地址才最终确定。 构造函数中调用虚函数 基类先于派生类构造&#xff0c;所以构造时没法调用到派生类的虚函数&#xff0c;也就是说只能调用到自己&#x…...

工业状态监测如何选择合适的无线技术?

工业领域的状态监测在提高生产效率和产品质量方面起着关键作用。过去依赖于预防性维护和例行检查的方式已经不再能满足日益复杂的生产需求&#xff0c;随着工业物联网&#xff08;IIoT&#xff09;的兴起&#xff0c;设备状态监测逐渐成为一种关键策略&#xff0c;催生了预测性…...