|
主要功能:
1.将工程中resourcesPath下面所有目标后缀文件有选择性构建AssetBundle资源包:通过VersionManager.Update将已经打过包并且没有发生改变的目标文件进行过滤处理,只针对新的或有改变的目标文件进行打包。
2.使用版本管理器,根据所有目标文件的状态,生产相应的md5列表文件,以及版本号列表文件:m5码列表文件用来判断当前文件是否发生改变,版本号列表文件则用来让客户端进行有针对性的版本更新,可通过比较新旧版本号列表文件,过滤出需要更新的所有目标文件,参考,VersionManager.GetUpdatedFiles。
核心代码:
1.版本管理器,参考上一篇日志:C#代码:一个简单的版本管理器类2.PathUtils,主要用类集中管理几个关键目录的定义,代码略,可自行封装。
3.Exporter:
using UnityEngine;
using UnityEditor;
using System.IO;
public static class Exporter
{
static BuildAssetBundleOptions options;
static BuildTarget buildTarget;
static string exportPath;
static string resourcesPath;
static Exporter ()
{
options = BuildAssetBundleOptions.CollectDependencies
| BuildAssetBundleOptions.CompleteAssets
| BuildAssetBundleOptions.UncompressedAssetBundle;
buildTarget = EditorUserBuildSettings.activeBuildTarget;
exportPath = PathUtils.GetAssetBundlesPath ();
if (! System.IO.Directory.Exists (exportPath))
System.IO.Directory.CreateDirectory (exportPath);
resourcesPath = PathUtils.GetResoucesPath ();
}
static void ExportResourcesWithSuffix (string suffix)
{
string[] files = Directory.GetFiles (resourcesPath, suffix);
if (files.Length > 0) {
for (int i = 0; i < files.Length; i++) {
var file = files ;
if (VersionManager.Update (file)) {
Object mainAsset = AssetDatabase.LoadMainAssetAtPath (file);
string pathName = exportPath + PathUtils.GetExportedName (file);
BuildPipeline.BuildAssetBundle (mainAsset, null, pathName, options, buildTarget);
}
}
}
}
[MenuItem("Assets/Export Resources")]
static void ExportResources ()
{
VersionManager.Began ();
//export prefab
ExportResourcesWithSuffix ("*.prefab");
//export txt
ExportResourcesWithSuffix ("*.txt");
VersionManager.Ended ();
}
}
|
|