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();
}
}
|