模板网站外链做不起来,做矿业的郑州公司网站,钓鱼网站在线制作,wordpress打开有背景音乐用odin实现了一个资源复制编辑器#xff0c;使用要安装odin#xff0c;功能是把要复制的资源路径一个个添加设置#xff0c;点copy能把列表里的资源全部复制#xff0c;支持目录复制到目录#xff0c;文件复制到目录#xff0c;文件复制替换。提升效率#xff0c;让自己…用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 GetWindowPathTableListWindow();window.Show();}// 示例数据用于在编辑器窗口中显示[TableList]public ListItem PathItems new ListItem();[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;}
}