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

用odin实现的资源复制编辑器

用odin实现了一个资源复制编辑器,使用要安装odin,功能是把要复制的资源路径一个个添加设置,点copy能把列表里的资源全部复制,支持目录复制到目录,文件复制到目录,文件复制替换。提升效率,让自己有更多的时间研究其他东西或者休息,需要注意的是只有一个目标路径的情况下,不能同时填源文件路径和源文件夹路径,不然不知道要拷贝文件还是文件夹,这个应该很好理解吧。代码如下:

using UnityEditor;
using UnityEngine;
using Sirenix.OdinInspector.Editor;
using Sirenix.OdinInspector;
using System;
using System.IO;
using System.Collecttions.Generic;
public class PathTableListWindow : OdinEditorWindow
{[MenuItem("Window/Open Path Table List")]private static void OpenWindow(){// GetExistingOrCreateNewWindow 是一个用于创建或获取已存在窗口的辅助方法var window = GetWindow<PathTableListWindow>();window.Show();}// 示例数据,用于在编辑器窗口中显示[TableList]public List<Item> PathItems = new List<Item>();[Button("Copy")]private void CopyAssets(){foreach(var item in PathItems){if (Directory.Exists(item.SourcePath)){// 如果源路径是文件夹,则递归复制所有文件和子文件夹CopyDirectory(item.SourcePath, item.TargetPath);}else if (File.Exists(item.SourcePath)){// 如果源路径是文件,则直接复制文件string destDir = Path.GetDirectoryName(item.TargetPath);if (!Directory.Exists(destDir)){Directory.CreateDirectory(destDir);}File.Copy(item.SourcePath, item.TargetPath, true);}if(!string.IsNullOrEmpty(item.SourceFilePath)){if(string.IsNullOrEmpty(item.TargetFilePath){var destFile = Path.Combine(item.TargetPath,Path.GetFileName(item.TargetFilePath));File.Copy(item.SourceFilePath, destFile, true);}else{File.Copy(item.SourceFilePath, item.TargetFilePath, true);}}}}private void CopyDirectory(string source, string destination){if(File.GetAttributes(source).HasFlag(FileAttributes.Directory)){string targetDest = Path.Combine(destination,Path.GetFileName(source));if(!Directory.Exists(targetDest)){// 创建目标目录Directory.CreateDirectory(targetDest );}// 递归复制子目录string[] dirs = Directory.GetDirectories(source);foreach (string dir in dirs){string destDir = Path.Combine(targetDest, Path.GetFileName(dir));CopyDirectory(dir, destDir);}// 获取源目录下的所有文件string[] files = Directory.GetFiles(source);foreach (string file in files){string destFile = Path.Combine(targetDest, Path.GetFileName(file));File.Copy(file, destFile, true);}}else{// 获取源目录下的所有文件string[] files = Directory.GetFiles(source);foreach (string file in files){string destFile = Path.Combine(destination, Path.GetFileName(file));File.Copy(file, destFile, true);}}}[System.Serializable]public class Item{[TableColumnWidth(60)][FolderPath, PropertyOrder(-1),HorizontalGroup("资源路径列表",0.25f)]public string SourcePath;[FolderPath, PropertyOrder(-1),HorizontalGroup("资源路径列表",0.25f)]public string TargetPath;[FilePath, PropertyOrder(-2),HorizontalGroup("资源路径列表",0.25f)]public string TargeFiletPath;[FilePath, PropertyOrder(-2),HorizontalGroup("资源路径列表",0.25f)]public string SourceFilePath;}
}

相关文章:

用odin实现的资源复制编辑器

用odin实现了一个资源复制编辑器&#xff0c;使用要安装odin&#xff0c;功能是把要复制的资源路径一个个添加设置&#xff0c;点copy能把列表里的资源全部复制&#xff0c;支持目录复制到目录&#xff0c;文件复制到目录&#xff0c;文件复制替换。提升效率&#xff0c;让自己…...

linux监控文件操作行为

linux监控文件操作行为 使用 auditd 系统 auditd 是Linux系统的一个安全和审计系统&#xff0c;它能够跟踪系统上发生的安全相关事件。要使用 auditd 来监控文件&#xff0c;你需要首先确保 auditd 已经安装并且运行在你的系统上。 然后&#xff0c;你可以使用 auditctl 命令…...

单链表接口函数的实现(增删查改)

一、单链表的实现形式以及接口函数的声明 #include<stdio.h> #include<stdlib.h> #include<assert.h> typedef int DataType ;typedef struct SListNode {DataType data;struct SListNode* next; }SLTNODE; void SLTPrint(SLTNODE* phead);//打印链表 SLTNO…...

超低功耗Sub-1G收发芯片DP32RF002 M0内核(G)FSK/OOK 无线收发机的32位SoC芯片

产品概述 DP32RF002是深圳市动能世纪科技有限公司研制的基于ARMCortex-MO内核的超低功耗 高性能的、单片集成(G)FSK/OOK 无线收发机的32位SoC芯片。工作于200 ~960MHz范围内&#xff0c;支持灵活可设的数据包格式&#xff0c;支持自动应答和自动重发功能&#xff0c;支持跳频…...

uniapp_微信小程序_NaN

一、定义 isNaN() 函数用于检查一个值是否为 NaN。它接受一个参数&#xff0c;该参数可以是任何 JavaScript 数据类型&#xff0c;包括数字、字符串、对象等。如果参数是 NaN&#xff0c;或者不能被转换为数字&#xff0c;则 isNaN() 返回 true&#xff1b;否则返回 false。 …...

1043: 利用栈完成后缀表达式的计算

解法&#xff1a; #include<iostream> #include<stack> using namespace std; int main() {char a;stack<int> sk;while (cin >> a && a ! #) {if (a > 0 && a < 9) {sk.push(a - 0);}else {int num2 sk.top();sk.pop();int n…...

初学ELK - elk部署

一、简介 ELK是3个开源软件组合&#xff0c;分别是 Elasticsearch &#xff0c;Logstash&#xff0c;Kibana Elasticsearch &#xff1a;是个开源分布式搜索引擎&#xff0c;提供搜集、分析、存储数据三大功能。它的特点有&#xff1a;分布式&#xff0c;零配置&#xff0c;自…...

[Java EE] 计算机工作原理与操作系统简明概要

1. 计算机工作原理 1.1 生活中常见的计算机 计算机分为通用计算机和专用计算机,计算机并不单单指的是电脑,还有我们平时使用的手机,ipad,智能手表等终端设备都是计算机.还有我们用户不常见的计算机,比如服务器. 还有许多嵌入式设备(针对特定场景定制的"专用计算机"…...

【尚硅谷】Git与GitLab的企业实战 学习笔记

目录 第1章 Git概述 1. 何为版本控制 2. 为什么需要版本控制 3. 版本控制工具 4. Git简史 5. Git工作机制 6. Git和代码托管中心 第2章 Git安装 第3章 Git常用命令 1. 设置用户签名 1.1 基本语法 1.2 案例实操 2. 初始化本地库 2.1 基本语法 2.2 案例实操 3. 查…...

如何在MobaXterm上使用rz命令

1、首先输入命令和想下载的文件&#xff0c;如下图&#xff1a; 2、按住ctrl鼠标右键&#xff0c;选择如下选项&#xff1a; 上传命令是rz&#xff0c;选择Receive...... 下载命令是sz&#xff0c;选择Send...... 3、我这里是要把Linux上的文件下载到我的本地window磁盘&…...

【计算机考研】408网课汇总+资源分享

408王道的视频就比较通俗易懂 王道的教材非常契合408的大纲&#xff0c;是专门为408大纲而编写的&#xff0c;而教材是方方面面都讲解的透彻。 建议王道为主&#xff0c;网络搜索为辅&#xff01; 王道中讲解不清楚&#xff0c;看不懂的知识点&#xff0c;可以尝试在网络上进…...

如何在OceanBase v4.2 中快速生成随机数据

在使用传统数据库如 MySQL 和 Oracle 时&#xff0c;由于缺乏多样化的随机数据生成方案&#xff0c;或者实现成本过高&#xff0c;构造随机数据的开发成本受到了影响。OceanBase在老版本中虽然有相应的解决方案&#xff0c;但语法复杂和性能较差等问题仍然存在。 现在&#xf…...

nvm node.js的安装

说明&#xff1a;部分但不全面的记录 因为过程中没有截图&#xff0c;仅用于自己的学习与总结 过程中借鉴的优秀博客 可以参考 1,npm install 或者npm init vuelatest报错 2&#xff0c;了解后 发现是nvm使用的版本较低&#xff0c;于是涉及nvm卸载 重新下载最新版本的nvm 2…...

【Docker】安装Redis、Nginx

1、安装redis mkdir -p /docker/redis mkdir -p /docker/redis/data touch /docker/redis/redis.conf touch /docker/redis/redis.bash编辑配置文件 vim /docker/redis/redis.conf # Redis配置文件# Redis默认不是以守护进程的方式运行&#xff0c;可以通过该配置项修改&…...

RK3568 UBUNTU修改网卡名称

​​​​​​RK3568 UBUNTU系统有两个网卡&#xff0c;ETH0和ETH1&#xff0c;于设备机壳丝印ETH1、ETH2无法对应&#xff0c;于是百度了一下相关的修改办法&#xff0c;有修改设备树的等等&#xff0c;挑了一个最简单&#xff0c;验证通过 #第1步&#xff0c;将原网卡关闭ip …...

【华为OD机试C++】统计字符

《最新华为OD机试题目带答案解析》:最新华为OD机试题目带答案解析,语言包括C、C++、Python、Java、JavaScript等。订阅专栏,获取专栏内所有文章阅读权限,持续同步更新! 文章目录 描述输入描述输出描述示例代码描述 输入一行字符,分别统计出包含英文字母、空格、数字和其它…...

百货商场用户画像描绘and价值分析(下)

目录 内容概述数据说明技术点主要内容4 会员用户画像和特征字段创造4.1 构建会员用户基本特征标签4.2 会员用户词云分析 5 会员用户细分和营销方案制定5.1 会员用户的聚类分析及可视化5.2 对会员用户进行精细划分并分析不同群体带来的价值差异 内容概述 本项目内容主要是基于P…...

spring-cloud微服务gateway

核心部分&#xff1a;routes(路由)&#xff0c; predicates(断言)&#xff0c;filters(过滤器) id&#xff1a;可以理解为是这组配置的一个id值&#xff0c;请保证他的唯一的&#xff0c;可以设置为和服务名一致 uri&#xff1a;可以理解为是通过条件匹配之后需要路由到&…...

【python】在pycharm创建一个新的项目

双击打开pycharm,选择create new project 选择create,后进入项目 右键项目根目录,选择new一个新的python file 随意命名一下 输入p 然后后面就会出现智能补全提示,此时轻敲一下tab,代码就写好了,非常的方便 右键执行一下代码,下面两个直接运行和debug运行都是可以的 小结 …...

java小作业(9)----用函数实现斐波那契数列(第二遍)

代码&#xff1a; public class Main {public static void main(String[] args) {int n 20; // 你可以更改这个值来计算和输出前n个斐波那契数for (int i 0; i < n; i) {System.out.print(fibonacci(i) " ");}}public static int fibonacci(int n) {if (n <…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机&#xff0c;点进去 点进去 查看URL&#xff0c;有 ?fileflag.php说明存在文件包含&#xff0c;原理是php://filter 协议 当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执行。 用php://filter加编码&#xff0c;能让PHP把文件内容…...