1 using System.Collections;
2 using UnityEngine;
3 using UnityEditor;
4 using System.IO;
5
6 /// <summary>
7 /// 把工程中设置了AssetBundle Name的资源打包成.unity3d 到StreamingAssets目录下
8 /// </summary>
9 public class ExportAssetBundle : EditorWindow
10 {
11 // public static string sourcePath = Application.dataPath + "/Resources";
12 private string OutputPath = "Assets/StreamingAssets";
13
14 [MenuItem("AssetsManager/导出所有AssetBundle")]
15 static void AddWindow()
16 {
17 //创建窗口
18 ExportAssetBundle window = (ExportAssetBundle)EditorWindow.GetWindowWithRect(typeof(ExportAssetBundle),new Rect(Screen.width/2,Screen.height/2,400,80), true, "导出AssetBundle");
19 window.Show();
20
21 }
22
23
24 void OnGUI()
25 {
26 EditorGUILayout.BeginHorizontal();
27 GUILayout.Label("导出路径:");
28 OutputPath = EditorGUILayout.TextField(OutputPath);
29 if (GUILayout.Button("浏览"))
30 {
31 //EditorApplication.delayCall += OpenFolder;
32 OutputPath = EditorUtility.OpenFolderPanel("选择要导出的路径", "", "");
33 }
34 EditorGUILayout.EndHorizontal();
35 if (GUILayout.Button("打包",GUILayout.MinHeight(50)))
36 {
37 BuildAssetBundle();
38 this.Close();
39 }
40 }
41
42
43 public void BuildAssetBundle()
44 {
45 string outputPath = Path.Combine(OutputPath, Platform.GetPlatformFolder(EditorUserBuildSettings.activeBuildTarget));
46 if (!Directory.Exists(outputPath))
47 {
48 Directory.CreateDirectory(outputPath);
49 }
50
51 //根据BuildSetting里面所激活的平台进行打包
52 BuildPipeline.BuildAssetBundles(outputPath, 0, EditorUserBuildSettings.activeBuildTarget);
53
54 AssetDatabase.Refresh();
55
56 Debug.Log("打包完成");
57
58 }
59 }
60
61 public class Platform
62 {
63 public static string GetPlatformFolder(BuildTarget target)
64 {
65 switch (target)
66 {
67 case BuildTarget.Android:
68 return "Android";
69 case BuildTarget.iOS:
70 return "IOS";
71 case BuildTarget.WebGL:
72 return "WebGL";
73 case BuildTarget.StandaloneWindows:
74 case BuildTarget.StandaloneWindows64:
75 return "Windows";
76 case BuildTarget.StandaloneOSXIntel:
77 case BuildTarget.StandaloneOSXIntel64:
78 case BuildTarget.StandaloneOSXUniversal:
79 return "OSX";
80 default:
81 return null;
82 }
83 }
84 }