AssetBundle资源打包
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.IO;
namespace Editor
{
public static class AssetBundleBuild
{
#region 字段
private static string output;
#endregion
#region 属性
private static string OutPut
{
get
{
if(string.IsNullOrEmpty(output))
{
output = "../Assets";
SetOutput();
}
return output;
}
}
#endregion
#region 方法
[MenuItem("Assets/资源/创建资源包/Android")]
private static void BuildAndroid()
{
Build(BuildTarget.Android);
}
[MenuItem("Assets/资源/创建资源包/IOS")]
private static void BuildIOS()
{
}
private static void Build(BuildTarget target)
{
var localTarget = EditorUserBuildSettings.activeBuildTarget;
if (target != localTarget)
{
string msg = string.Format("当前工程设置为:{0},而资源包目标平台是:{1},如果强制打包,所有资源将重新导入目标平台,过程会很慢,继续打包?", localTarget, target);
if (!EditorUtility.DisplayDialog("", msg, "继续", "取消")) return;
}
var output = GetOutput(target);
if (string.IsNullOrEmpty(output)) return;
var opts = GetBuildOpts();
var mf = BuildPipeline.BuildAssetBundles(output, opts, target);
var str = (mf == null ? "无资源" : "创建完成");
Debug.LogWarning(str);
AssetDatabase.Refresh();
}
private static string GetOutput(BuildTarget target
{
string outputFolder = OutPut;
string outputDir = outputFolder + "/" + GetPlatform(target);
if (!Directory.Exists(outputDir)) Directory.CreateDirectory(outputDir);
return outputDir;
}
private static BuildAssetBundleOptions GetBuildOpts()
{
var opts = BuildAssetBundleOptions.ForceRebuildAssetBundle;
return opts;
}
public static string GetPlatform(BuildTarget target)
{
switch (target)
{
case BuildTarget.Android:
return "Android";
case BuildTarget.iOS:
return "iOS";
case BuildTarget.StandaloneWindows:
case BuildTarget.StandaloneWindows64:
return "Windows";
case BuildTarget.StandaloneOSXIntel:
case BuildTarget.StandaloneOSXIntel64:
case BuildTarget.StandaloneOSX:
return "OSX";
default:
return "Other";
}
}
private static void SetOutput()
{
output = Path.GetFullPath(output);
output.Replace("\\", "/");
}
#endregion
}
}