此代码块主要实现了Unity中的资源拷贝以及分类。将Audio文件夹内的音频文件,根据后缀进行分类。代码灵活可以根据需要修改为你的需要进行修改。
先上效果
代码如下
//先创建几个位置,此次分类主要是分类的Audio文件夹下的文件根据后缀不同分类为mp3,wav,ogg
private static string YuanAudioPath = Application.dataPath + "/Audio";
private static string AudioCopyPath = Application.dataPath + "/AudioCopy";
private static string BgmPathMp3 = Application.dataPath + "/AudioCopy/Mp3";
private static string BgmPathWav = Application.dataPath + "/AudioCopy/Wav";
private static string BgmPathOgg = Application.dataPath + "/AudioCopy/Ogg";
[MenuItem("Tool/音乐文件分类拷贝")]
public static void CopyMusicFile()
{
//先创建文件夹
if (!File.Exists(AudioCopyPath))
{
Directory.CreateDirectory(AudioCopyPath); //创建一个音乐文件夹。
Directory.CreateDirectory(BgmPathMp3); //创建3个指定资源的子文件夹
Directory.CreateDirectory(BgmPathWav);
Directory.CreateDirectory(BgmPathOgg);
CopyDirectory(YuanAudioPath); //将音乐文件分类拷贝到创建的三个特殊文件夹。
AssetDatabase.Refresh();
}
else
{ return; }
}
public static void CopyDirectory(string srcDir) // 通过后缀将文件分别拷贝到指定文件夹
{
DirectoryInfo source = new DirectoryInfo(srcDir);
if (!source.Exists)
{
return;
}
FileInfo[] files = source.GetFiles(); //返回当前目录的文件列表
for (int i = 0; i < files.Length; i++) //读取文件列表,将指定文件放到指定文件夹
{
if (files[i].Name.EndsWith(".meta")) //不copy带有meta的文件 ...但是根据Unity的特性还是会自动生成meta文件....
{
continue;
}
if (files[i].Name.EndsWith(".ogg")) //挑选后缀为.ogg的音频文件
{
File.Copy(files[i].FullName, Path.Combine(BgmPathOgg, files[i].Name), true); //将后缀为.ogg的音频文件放到OGG文件夹
}
else if (files[i].Name.EndsWith(".mp3")) //挑选后缀为.mp3的音频文件
{
File.Copy(files[i].FullName, Path.Combine(BgmPathMp3, files[i].Name), true); //将后缀为.mp3的音频文件放到MP3文件夹
}
else if (files[i].Name.EndsWith(".wav")) //挑选后缀为.wav的音频文件
{
File.Copy(files[i].FullName, Path.Combine(BgmPathWav, files[i].Name), true); //将后缀为.wav的音频文件放到WAV文件夹
}
}
}