使用方法
将该脚本放置于Editor目录下,选择object类型的预置物,按图片点选,选择目录,确定,目录下将自动打包对应平台的资源。
注意
不同的平台需要不同的打包,这里包含了android和windows
源代码
using UnityEngine;
using System.IO;
using UnityEditor;
using System;
namespace QQ
{
public class BuildAssetBundle
{
[MenuItem("Assets/Build AssetBundle", true)]
public static bool CheckObjectType()
{
GameObject obj = Selection.activeGameObject;
return obj != null && Selection.objects.Length == 1;//打包的文件必须是GameObject类型,一次只能打包一个
}
private static AssetBundleBuild[] GetBundleBuild(DateTime time)
{
GameObject obj = Selection.activeGameObject;
AssetBundleBuild[] asset = new AssetBundleBuild[1];
asset[0].assetBundleName = obj.name + ".qq";//文件名定义
asset[0].assetNames = new string[] { AssetDatabase.GetAssetPath(obj) };
return asset;
}
[MenuItem("Assets/Build AssetBundle")]
public static void Bundle()
{
if (!Directory.Exists(Application.streamingAssetsPath))
Directory.CreateDirectory(Application.streamingAssetsPath);
string path = EditorUtility.SaveFolderPanel("保存资源到", Application.streamingAssetsPath, "Bundles");
if (path.Contains("/"))
{
AssetBundleBuild[] asset = GetBundleBuild(DateTime.Now);
string windows = path + "/Windows";
if (!Directory.Exists(windows))
Directory.CreateDirectory(windows);
BuildPipeline.BuildAssetBundles(windows, asset, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows);
string android = path + "/Android";
if (!Directory.Exists(android))
Directory.CreateDirectory(android);
BuildPipeline.BuildAssetBundles(android, asset, BuildAssetBundleOptions.None, BuildTarget.Android);
}
}
}
}