1.public static AssetBundleManifest BuildAssetBundles(string outputPath, BuildAssetBundleOptions assetBundleOptions, BuildTarget targetPlatform);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 using System.Collections; using System.Collections.Generic; using UnityEditor; using UnityEngine; public class CreateBundle : MonoBehaviour { [MenuItem( "CustomEditor/CreateAssetBundleBySpecified" )] static void CreateAssetBundlesMain() { AssetBundleBuild[] buildMap = new AssetBundleBuild[2]; //====================================================== buildMap[0].assetBundleName = "enemybundle" ; string [] enemyAssets = new string [1]; enemyAssets[0] = "Assets/Prefabs/Cube0.prefab" ; buildMap[0].assetNames = enemyAssets; //====================================================== //====================================================== buildMap[1].assetBundleName = "herobundle" ; string [] heroAssets = new string [1]; heroAssets[0] = "Assets/Prefabs/Cube1.prefab" ; buildMap[1].assetNames = heroAssets; //====================================================== BuildPipeline.BuildAssetBundles( "Assets/StreamingAssets" , buildMap,BuildAssetBundleOptions.None,BuildTarget.StandaloneWindows64); //刷新编辑器 AssetDatabase.Refresh(); } }2.public static AssetBundleManifest BuildAssetBundles(string outputPath, AssetBundleBuild[] builds, BuildAssetBundleOptions assetBundleOptions, BuildTarget targetPlatform);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; public class CreateBundle1 : MonoBehaviour { [MenuItem( "CustomEditor/AllResourcesToTargetFolder" )] static void AssetsBundleAllResourcesToTargetFolder() { BuildPipeline.BuildAssetBundles( "Assets/StreamingAssets" , BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows); //刷新编辑器 AssetDatabase.Refresh(); } }
3.对第一种方式的优化,可以根据在Hierarchy中选择指定的对象进行打包
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; public class CreateBundle2 : MonoBehaviour { [MenuItem( "CustomEditor/CreateAssetBundleBySelected" )] static void CreateAssetBundleBySelected() { //获取选择的需要打包的对象 Object[] SelectedObjects = Selection.GetFiltered( typeof (Object), SelectionMode.DeepAssets); AssetBundleBuild[] buildMap = new AssetBundleBuild[1]; //====================================================== buildMap[0].assetBundleName = "demobundle" ; string [] demoAssets = new string [SelectedObjects.Length]; for ( int i = 0; i < SelectedObjects.Length; i++) { demoAssets[i] = AssetDatabase.GetAssetPath(SelectedObjects[i]); } buildMap[0].assetNames = demoAssets; //====================================================== BuildPipeline.BuildAssetBundles( "Assets/StreamingAssets" , buildMap, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64); //刷新编辑器 AssetDatabase.Refresh(); } }