- 需放在Editor文件夹下,因为Editor文件夹中的文件不会被打包。使用"using UnityEditor;"的文件不可以被打包,否则会报错。
- StreamingAssets是只读路径,不能写入。
- 移动平台只能读取路径StreamingAssets里面的,所以如果在移动端要进行下载,可以把资源放到StreamingAssets中。
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEditor;
using UnityEngine;
public class AssetBundle : MonoBehaviour
{
public static void CreateDir(string path)
{
DirectoryInfo directoryInfo = new DirectoryInfo(path);
if (!directoryInfo.Exists)
{
directoryInfo.Create();
}
}
---------------------------------------Android平台----------------------------------------
[MenuItem("AssetBundle/AssetBundleAndroid")]
public static void BuildAssetToAndroid()
{
string outPath = Application.dataPath + "/../BuildAssetBundle/Android/";
CreateDir(outPath);
object[] objs = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets);
foreach (Object item in objs)
{
if (BuildPipeline.BuildAssetBundle(item, null,
outPath + item.name + ".assetbundle",
BuildAssetBundleOptions.CollectDependencies, BuildTarget.Android))
{
Debug.Log(item.name + " Android packed successfully!");
}
else
{
Debug.Log(item.name + " Android packed failed!");
}
}
AssetDatabase.Refresh();
}
---------------------------------------Window平台----------------------------------------
[MenuItem("AssetBundle/AssetBundleWindow")]
public static void BuildAssetToWindow()
{
string outPath = Application.dataPath + "/../BuildAssetBundle/Window/";
CreateDir(outPath);
object[] objs = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets);
foreach (Object item in objs)
{
if (BuildPipeline.BuildAssetBundle(item, null,
outPath + item.name + ".assetbundle",
BuildAssetBundleOptions.CollectDependencies, BuildTarget.StandaloneWindows))
{
Debug.Log(item.name + " Window packed successfully!");
}
else
{
Debug.Log(item.name + " Window packed failed!");
}
}
AssetDatabase.Refresh();
}
---------------------------------------iOS平台----------------------------------------
[MenuItem("AssetBundle/AssetBundleIOS")]
public static void BuildAssetToIOS()
{
string outPath = Application.dataPath + "/../BuildAssetBundle/IOS/";
CreateDir(outPath);
object[] objs = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets);
foreach (Object item in objs)
{
if (BuildPipeline.BuildAssetBundle(item, null,
outPath + item.name + ".assetbundle",
BuildAssetBundleOptions.CollectDependencies, BuildTarget.iOS))
{
Debug.Log(item.name + " IOS packed successfully!");
}
else
{
Debug.Log(item.name + " iOS packed failed!");
}
}
AssetDatabase.Refresh();
}
---------------------------------------Mac平台----------------------------------------
[MenuItem("AssetBundle/AssetBundleMac")]
public static void BuildAssetToMac()
{
string outPath = Application.dataPath + "/../BuildAssetBundle/Mac/";
CreateDir(outPath);
object[] objs = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets);
foreach (Object item in objs)
{
if (BuildPipeline.BuildAssetBundle(item, null,
outPath + item.name + ".assetbundle",
BuildAssetBundleOptions.CollectDependencies, BuildTarget.StandaloneOSXUniversal))
{
Debug.Log(item.name + " Mac packed successfully!");
}
else
{
Debug.Log(item.name + " Mac packed failed!");
}
}
AssetDatabase.Refresh();
}
}