unity3d 图片替换工具

最近写了个替换系统图片资源的工具,拖拽项目内图片资源路径文件夹,会生成显示图片缩略图和名字的item,在右侧把需要替换的图片拖进来点击确定就可以了,主要是省了重命名这一步

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.IO;
public Class MyItem
{public string name;public Texture2D image;public Texture2D draggedTex;public string draggedTexName;public string path;public MyItem(){name = "";image = null;draggedTex = null;}
}
public class ImageReplace: EditorWindow
{[MenuItem("Window/ImageReplace")]public static void OpenWindow(){var win = GetWindom(ImageReplace)();win.titleContent = new GUIContent("Image Place");win.Show();}private List<MyItem> items = new List<MyItem>();private string folderPath;private Vector2 ScrollPosition; void OnGUI(){GUILayout.Label("Drop an Image file here", EditorStyles.boldLabel);Event currentEvent = Event.current;Rect dropArea = GUILayoutUtility.GetRect(GUIContent.none, GUIStyle.none, GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true));switch (currentEvent.type){case EventType.DragUpdated:case EventType.DragPerform:if (!dropArea.Contains(currentEvent.mousePosition))break;DragAndDrop.visualMode = DragAndDropVisualMode.Copy;if (currentEvent.type == EventType.DragPerform){DragAndDrop.AcceptDrag();foreach (var path in DragAndDrop.paths){if(File.GetAttributes(path).HasFlag(FileAttributes.Directory)){var allFiles = Directory.GetFiles(path,"*.*",SearchOption.AllDirectories);{foreach(var file in allFiles){if(Path.GetExtension(file) == ".png" || Path.GetExtension(file) == ".jng" ){CreateItem(file);}}}}else{if(Path.GetExtension(file) == ".png" || Path.GetExtension(file) == ".jng" ){CreateItem(file);}}}}Event.current.Use();break;}GUILayout.Space(10);scrollPosition = GUILayout.BeginScrollView(scrollPosition);foreach (var item in items){GUILayout.BeginHorizontal();GUILayout.Label(item.name,GUILayout.Width(200));GUILayout.Box(item.image,GUILayout.Width(100),GUILayout.Height(100));GUIStyle style = new GUIStyle();style.normal.textColor = Color.white;Rect dropArea2 = GUILayoutUtility.GetRect(GUIContent.none, GUIStyle.none, GUILayout.Width(100),GUILayout.Height(100));Event dropEvent = Event.current;switch (dropEvent .type){case EventType.DragUpdated:case EventType.DragPerform:if (!dropArea.Contains(dropEvent .mousePosition))break;DragAndDrop.visualMode = DragAndDropVisualMode.Copy;if (currentEvent.type == EventType.DragPerform){DragAndDrop.AcceptDrag();foreach (var path in DragAndDrop.paths){if(Path.GetExtension(file) == ".png" || Path.GetExtension(file) == ".jng" ){Texture2D tex = new Texture2D (2,2);tex.LoadImage(File.ReadAllBytes(path));item.draggedTex = tex;item.draggedTexName =Path.GetFileName(path);}}}dropEvent .Use();break;}GUILayout.Box(item.draggedTex,GUILayout.Width(100),GUILayout.Height(100));GUILayout.EndHorizontal();}GUILayout.EndScrollView();GUILayout.Space(10);GUILayout.BeginHorizontal();if(GUILayout.Button("确定")){ApplyChanges();}if(GUILayout.Button("清除")){ClearItems();}GUILayout.EndHorizontal();}private void CreateItem(string file){MyItem newItem = new MyItem{name = Path.GetFileName(file);path = file;image = AssetDatabase.LoadAssetAtPath<Texture2D>(file);}items.Add(newItem);}private void ApplyChanges(){foreach (var item in items){if(item.draggedTex){byte[] imgBytes = item.draggedTex.EncodeToPNG();File.WriteAllBytes(item.path,imgBytes );}}Debug.Log("Finish");}private void ClearItems(){items.Clear();}
}

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

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

相关文章

【LeetCode刷题-树】-- 116.填充每个节点的下一个右侧节点指针

116.填充每个节点的下一个右侧节点指针 方法&#xff1a;层次遍历 /* // Definition for a Node. class Node {public int val;public Node left;public Node right;public Node next;public Node() {}public Node(int _val) {val _val;}public Node(int _val, Node _left, N…

利用anaconda中的Conda创建虚拟环境

目录 1. Anaconda 环境变量手动设置(详细)2. Conda 创建虚拟环境参考文献 1. Anaconda 环境变量手动设置(详细) 问题 Win键r打开运行对话框&#xff0c;输入cmd回车 输入conda&#xff0c;显示&#xff1a;‘conda’ 不是内部或外部命令&#xff0c;也不是可运行的程序或批处…

gamit一(虚拟机启动不了)

Intel VT-x处于禁用状态怎么办-百度经验 1重新启动电脑 2找到电脑对应的品牌&#xff0c;联想G510是F2, 3进去BIOS&#xff0c;configure里面修改virtual为enable&#xff0c;回车 4F10保存&#xff0c;退出

【教3妹学编程-算法题】需要添加的硬币的最小数量

3妹&#xff1a;2哥2哥&#xff0c;你有没有看到新闻&#xff0c; 有人中了2.2亿彩票大奖&#xff01; 2哥 : 看到了&#xff0c;2.2亿啊&#xff0c; 一生一世也花不完。 3妹&#xff1a;为啥我就中不了呢&#xff0c;不开心呀不开心。 2哥 : 得了吧&#xff0c;你又不买彩票&…

Java解决二进制矩阵中特殊位置问题

Java解决二进制矩阵中特殊位置问题 01 题目 给你一个大小为 rows x cols 的矩阵 mat&#xff0c;其中 mat[i][j] 是 0 或 1&#xff0c;请返回 矩阵 *mat* 中特殊位置的数目 。 特殊位置 定义&#xff1a;如果 mat[i][j] 1 并且第 i 行和第 j 列中的所有其他元素均为 0&…

HTML实现页面

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>工商银行电子汇款单</title> </head> &…

从网页抓取数据到Pandas运算,再到MySQL的大数据处理---提效率篇

前言: 在处理网络数据时&#xff0c;从网页抓取表格数据并分析它们是一项常见任务。这篇文章介绍一种有效的工作流程&#xff0c;包含数据抓取、使用Pandas进行逻辑运算&#xff0c;以及对于大量数据运用MySQL的策略。 抓取并保存数据 当从网页上抓取数据时&#xff0c;直接进…

Ubuntu22.04 LTS + CUDA12.3 + CUDNN8.9.7 + PyTorch2.1.1

简介 本文记录Ubuntu22.04长期支持版系统下的CUDA驱动和cuDNN神经网络加速库的安装&#xff0c;并安装PyTorch2.1.1来测试是否安装成功。 安装Ubuntu系统 如果是旧的不支持UEFI启动的主板&#xff0c;请参考本人博客U盘系统盘制作与系统安装&#xff08;详细图解&#xff09…

1839_emacs中org-mode的代码结构

Grey 全部学习内容汇总&#xff1a; GitHub - GreyZhang/g_org: my learning trip for org-mode 1839_emacs中org-mode的代码结构 org-mode的代码结构主要是简单介绍一下如何让插入的代码片段具备源代码的处理属性&#xff0c;比如说以一定的语法进行显示、执行、被某些程序…

【探讨】bp神经网络是前馈还是后馈

目录 一、BP神经网络简介 1.1 什么是BP神经网络 1.2 BP神经网络的结构 二、BP神经网络的前馈与后馈 2.1 什么是BP神经网络的前馈 2.2 什么是BP神经网络的后馈 三、BP神经网络前馈与后馈的关系 3.1 BP神经网络前馈与后馈的区别 3.2 BP神经网络前馈与后馈的意义 四、BP…

php实现个性化域名(短网址)和个性化登录模版的解决方案

在PHP中&#xff0c;个性化域名通常指的是根据用户或业务需求动态生成具有特定规律的子域名。实现个性化域名的方法主要依赖于服务器配置和路由规则。下面是一些基本的步骤和考虑因素&#xff0c;以帮助你了解如何个性化域名&#xff0c;并了解这样做的好处。 如何实现个性化域…

注意力机制和自注意力机制

有很多自己的理解&#xff0c;仅供参考 Attention注意力机制 对于一张图片&#xff0c;我们第一眼看上去&#xff0c;眼睛会首先注意到一些重点的区域&#xff0c;因为这些区域可能包含更多或更重要的信息&#xff0c;这就是注意力机制&#xff0c;我们会把我们的焦点聚焦在比…

开源治理典型案例分享(汇编转)

当前&#xff0c;越来越多的企业申请通过信通院的开源治理成熟度评估和认证&#xff0c;获得增强级或先进级评估。这些企业包括中国工商银行股份有限公司、中国农业银行、上海浦东发展银行股份有限公司、中信银行股份有限公司、中国太平洋保险&#xff08;集团&#xff09;股份…

练练手之“四环”“磁铁”(svg)

文本是闲暇之余练习svg的运用的产物&#xff0c;记录以备有需。 <svg xmlns"http://www.w3.org/2000/svg" viewBox"0 0 500 500" width"500px" height"500px"><path d"M150,100 A50,50 0 1,1 150,99.999" stroke&q…

数据库课程设计mysql设计示例

以下是一个简单的MySQL数据库课程设计示例&#xff1a; 1.设计数据库系统 在本课程设计中&#xff0c;我们将设计一个简单的电子商务网站的数据库系统。该系统包括以下几个实体&#xff1a; 用户&#xff08;Users&#xff09;产品&#xff08;Products&#xff09;购物车&a…

MySQL笔记-第07章_单行函数

视频链接&#xff1a;【MySQL数据库入门到大牛&#xff0c;mysql安装到优化&#xff0c;百科全书级&#xff0c;全网天花板】 文章目录 第07章_单行函数1. 函数的理解1.1 什么是函数1.2 不同DBMS函数的差异1.3 MySQL的内置函数及分类 2. 数值函数2.1 基本函数2.2 角度与弧度互换…

孩子还是有一颗网安梦——Bandit通关教程:Level 8 → Level 9

&#x1f575;️‍♂️ 专栏《解密游戏-Bandit》 &#x1f310; 游戏官网&#xff1a; Bandit游戏 &#x1f3ae; 游戏简介&#xff1a; Bandit游戏专为网络安全初学者设计&#xff0c;通过一系列级别挑战玩家&#xff0c;从Level0开始&#xff0c;逐步学习基础命令行和安全概念…

docker- 部署Jenkins集成Gitlab

目录 一、部署环境 二、获取镜像 三、配置maven 四、创建挂载目录 五、启动容器 六、Jenkins 初始化 七、相关插件安装与环境配置 八、Jenkins结合Gitlab进行构建及使用Gitlab钩子 一、部署环境 工具版本Docker20.10.14Jenkins2.396Gitlab14.8.2-eeJDK8、11Maven3.6…

Echarts小问题汇总

文章目录 Echarts小问题汇总1.柱状图第一条柱子遮挡Y轴解决方法2.在大屏渲染后 拖到小屏变模糊3.相邻柱状图中间不要有空隙4.实现echarts图表自适应5.单个柱状图最大宽度 Echarts小问题汇总 记录工作中使用Echarts的遇见的一些小问题&#xff0c;后续会不断进行补充 1.柱状图…

区块链实验室(31) - 交叉编译Ethereum的客户端Geth

编译Geth到X86架构平台 下载Geth源码&#xff0c;直接编译Geth源码&#xff0c;见下图。用file命令观察编译后的文件&#xff0c;架构是x86-64。 编译Geth到Arm64架构平台 直接用命令行编译&#xff0c;同时指定期望的架构为Arm64。编译脚本如下所示。 CGO_ENABLED0 GOOSlin…