Cómo empaquetar archivos específicos en un proyecto de unidad
using UnityEngine;
using System.Collections;
using UnityEditor;
using System.IO;
using System.Collections.Generic;
public class Bundle {
[MenuItem("Tools/SaveAudioClip")]
static void SavePos()
{
//--保存路径(可以自定义路径)
string outpath = @"C:\Users\Username\Desktop\MyAudio\";
//物体列表
List<Object> objList = new List<Object>();
//--获取当前工程下的文件所有文件路径
string[] paths = Directory.GetFiles("Assets","*.*",SearchOption.AllDirectories);
foreach (var path in paths)
{
//--剔除meta文件
if (Path.GetExtension(path) != null && Path.GetExtension(path) != ".meta")
{
Object obj=AssetDatabase.LoadAssetAtPath<Object>(path);
objList.Add(obj);
}
}
//创建文件夹
if (!File.Exists(outpath))
Directory.CreateDirectory(outpath);
List<string> audiopath = new List<string>();
//--遍历所有的物体对象
foreach (var item in objList)
{
//--如果是音频文件
if (item is AudioClip)
{
string itemPath = AssetDatabase.GetAssetPath(item);
string extension= Path.GetExtension(itemPath);
audiopath.Add(AssetDatabase.GetAssetPath(item));
//--第一种方法
//AssetDatabase.ExportPackage(itemPath, outpath + item.name + extension);
//第二种方法:利用流文件完成导出
CopyFile(itemPath, outpath + item.name);
}
}
//第三种方法:把整个打包成unitypackage文件
AssetDatabase.ExportPackage(audiopath.ToArray(),outpath+"name"+".unitypackage",ExportPackageOptions.Default);
Debug.Log("完成打包");
}
/// <summary>
/// 复制文件到新的目录
/// </summary>
/// <param name="soucre">原文件</param>
/// <param name="target">目标文件</param>
static void CopyFile(string soucre, string target)
{
//1、读取的流
using (FileStream fsRead = new FileStream(soucre, FileMode.Open, FileAccess.Read))
{
//2、写入的流
using (FileStream fsWrite = new FileStream(target, FileMode.OpenOrCreate, FileAccess.Write))
{
//--指定读取大小
byte[] buffer = new byte[1024 * 1024];
while (true)
{
int r = fsRead.Read(buffer, 0, buffer.Length);
if (r == 0)
break;
fsWrite.Write(buffer, 0, r);
}
}
}
}
}
El primero es el método de empaquetado que viene con unity. Si empaqueta el archivo prefabricado, puede seleccionar ExportPackageOptions en la forma de IncludeDependencies (para evitar la pérdida de scripts o algo así) ^ _ ^
El segundo es usar la secuencia de archivos para leer
El tercero es empaquetar todos los recursos específicos en archivos Unitypackage
ps: Una cosa para recordar es que si el archivo de destino empaquetado es el proyecto de unidad actual, puede que no sea un archivo de audio. Es porque no hay un archivo meta generado ... TnT ...
En este artículo acabo de empaquetar los archivos de audio. Si está interesado, puede intentar empaquetar otros archivos (como qué video, prefabricados, etc.);
La primera vez que escribo un blog, ignoro la unidad, pero creo que hay algunas cosas que deberían compartirse, para que tanto tú como yo podamos aprender rápidamente, ¿no?