图片查找工具

news/2024/10/18 12:21:02/

提示:提示个锤子

文章目录

  • 前言
  • 一、显示窗口
    • 1.面板创建
    • 2.绘制面板功能项
  • 二、EditorUtility
    • 1.进度条显示
  • 三、数据访问和资源操作
    • 1.获取存储资源的文件夹路径
    • 2.筛选资源
    • 3.资源id和路径之间转换
  • 四、File文件类
    • 1.ReadAllText
  • 总结


前言

最近公司在做性能优化,所以我也接了一些工具的需求,是做一个查找图片在预制中是否有使用的一个工具,做完时候也想着记录一下开发工具的大致步骤,万一后边忘了,也方便以后自己进行再次查阅。


一、显示窗口

1.面板创建

创建编辑器窗口是在EditorWindow类下的,所以需要继承继承EditorWindow类,这个类下有很多的函数,但是今天主要在这里记录下GetWindowWithRect这个函数。
代码如下:

using UnityEngine;
using UnityEditor;
public class EditorWindowTest : EditorWindow
{[MenuItem("Cards/资源查找工具", false)]private static void Panel(){GetWindowWithRect<SpriteToolsMainWindow>(new Rect(0, 0, 500, 500), false, "图片工具栏");}
}

具体解释:
1.MenuItem用于向主菜单和检视面板上添加菜单项,MenuItem 属性能够将任何静态函数转变为菜单命令。仅静态函数可使用 MenuItem 属性。
2.GetWindowWithRect属性会返回当前屏幕一个t类型的EditorWindow,第一个参数控制窗口的坐标与宽高,第二个参数创建不通类型窗口具体参考官方文档,第三个是窗口的标题。

2.绘制面板功能项

在面板上使用的布局版本分别是:EditorGUILayout和GUILayout两种布局。
其中使用了EditorGUILayout中的ObjectField方法,可以容纳任何类型的框框。
还使用了GUILayout中的布局方式(BeginVertical),Button,Label这几个属性。
代码如下(示例):

using UnityEditor;
using UnityEngine;
public class Test
{private Object spriteObject;private void OnGUI(){GUILayout.BeginVertical();spriteObject = EditorGUILayout.ObjectField("将纹理文件夹拖入:", spriteObject, typeof(Object), true,GUILayout.Width(300), GUILayout.Height(20));GUILayout.Label("描述");if (GUILayout.Button("开始查找", GUILayout.Width(100), GUILayout.Height(20)))Debug.Log("触发");GUILayout.EndVertical();}
}

以上便是面板的显示部分的全部内容。

二、EditorUtility

Editor 实用程序函数。

1.进度条显示

显示或更新含有 Cancel 按钮的进度条
代码如下:

using UnityEngine;
using UnityEditor;
public class Test
{float secs = 0;float progress = 0;public void ProgressBarExample(Object spriteObject){    	if (EditorUtility.DisplayCancelableProgressBar("正在查找","当前查找到哪个,动态显示",(float)(progress / secs))){Debug.Log("终止进度");}}
}

三、数据访问和资源操作

1.获取存储资源的文件夹路径

代码如下:

using UnityEngine;
using UnityEditor;
public class Test
{public void Path(Object spriteObject){    	string path = AssetDatabase.GetAssetPath(spriteObject)}
}

返回的所有路径均是相对于项目文件夹的路径,例如:“Assets/MyTextures/hello.png”。

2.筛选资源

代码如下:

using UnityEngine;
using UnityEditor;
public class Test
{public void GetUGID(Object spriteObject){    	// 获取到图片所有的ugidstring[] spriteGuidLst =AssetDatabase.FindAssets("t:texture", new[] { AssetDatabase.GetAssetPath(spriteObject) });}
}

返回值:string[] 匹配资源的数组。请注意将返回 GUID。
注意:搜索不区分大小写。

3.资源id和路径之间转换

代码如下:

using UnityEngine;
using UnityEditor;
public class Test
{public void Path(Object spriteObject){    	// 获取到图片所有的ugidstring[] spriteGuidLst =AssetDatabase.FindAssets("t:texture", new[] { AssetDatabase.GetAssetPath(spriteObject) });foreach (var guid in spriteGuidLst){var path = AssetDatabase.GUIDToAssetPath(guid);Debug.Log(path);}}public void Doit(){// 将资源文件路径转换为GUIDstring t = AssetDatabase.AssetPathToGUID("Assets/texture.jpg");Debug.Log(t);}
}

四、File文件类

1.ReadAllText

该函数的作用:打开一个文本文件,读取文件的所有行,然后关闭该文件。
代码如下:

using UnityEngine;
using UnityEditor;
public class Test
{	public void OpenFile(){// 获取到文件的所有行信息。string content = File.ReadAllText("Assets/main.prefab");}
}

总结

以上便是工具的核心实现使用的函数,具体的函数使用有些说的不太清楚,可以自己去官方文档进行参考—网盘SpriteTools;


http://www.ppmy.cn/news/533287.html

相关文章

看图工具MassiGra使用指南

一、简介 如果&#xff0c;你受够了win10自带的龟速打开的照片。只希望找到一个简单的看图软件&#xff0c;它不需要有乱七八糟的其他功能。它只需要支持浏览图片&#xff0c;且打开速度超快&#xff0c;当然还需要没有广告。那么&#xff0c;这里就有一款软件&#xff1a;完美…

【031】C++类和对象之运算符重载详解和代码实践(最全讲解)

C类和对象之运算符重载详解 引言一、运算符重载的基本概念1.1、可重载的运算符1.2、不可重载的运算符 二、重载 << 运算符&#xff08;全局函数实现&#xff09;三、重载 >> 运算符&#xff08;全局函数实现&#xff09;四、重载 运算符4.1、全局函数实现4.2、成员…

卡尔曼滤波测量球体自由落下

卡尔曼滤波测量球体自由落下 """ Created by Kaijun on 2020/11/11 """ import cv2 as cv # import cv2 import numpy as np from scipy.ndimage.filters import gaussian_filter from filterpy.kalman import predict,update from filterpy.sta…

荣耀手环5没有篮球鸿蒙,荣耀手环5和篮球版区别

大家好&#xff0c;我是时间财富网智能客服时间君&#xff0c;上述问题将由我为大家进行解答。 荣耀手环5和篮球版最大的区别就是它拥有两种佩戴方式&#xff0c;手腕模式和鞋扣模式。先把手环核心扣在鞋扣&#xff0c;再将鞋扣扣在鞋子&#xff0c;荣耀手环5 篮球版会自动切换…

实现注册与登录(企业级)

目录 实现注册超级管理员功能&#xff08;持久层&#xff09; 一、判定系统是否已经绑定超级管理员 二、编写保存用户记录的代码 三、编写查询用户ID的代码 实现注册超级管理员功能&#xff08;业务层&#xff09; 一、获取OpenId 二、编写注册新用户的业务代码 掌握 R…

乒乓球游戏电路设计

1.实验目的&#xff1a; 使用verilog HDL硬件描述语言乒乓球游戏电路设计 2.实验内容&#xff1a; 3.实验原理&#xff1a;按照视书上的内容&#xff0c;书写和运行代码&#xff0c;完成仿真操作 实验代码&#xff1a; &#xff08;1&#xff09; module pingp(clk, re…

Java-双色球系统

一 .业务分析&#xff1a; 1.双色球中奖规则&#xff1a; 任意规定二等奖500万&#xff0c;一等奖1000万元。 投注号码由6个红色球号码&#xff08;不可重复&#xff09;和1个蓝色球号码&#xff0c;红色球1-33&#xff0c;蓝色球1-16 二.程序设计 1.定义三个方法&#xff0…

matlab刚性球散射声场编程,基于小球反射法的超声脉冲波声场特性研究

超声换能器在超声检测、超声医疗和超声制造等系统中有着广泛的应用。由于各种超声技术都是利用换能器产生的振动能量与物质相互作用,从而产生各种物理、化学和生物等效应[1],所以各系统超声作用的效果和声场的性质密切相关,因此掌握换能器声场分布的信息对衡量换能器的性能至关…