Unity---Assets路径下的资源文件夹打包AssetBundle

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.IO;
using System.Windows.Forms;
using System;

public class CreateAssetsBundle : EditorWindow {

    private static CreateAssetsBundle window;
    string defaultPath = "";  

    [UnityEditor.MenuItem("MyTool/Create AssetsBundle")]
    public static void Init()
    {
        window = (CreateAssetsBundle)EditorWindow.GetWindow(typeof(CreateAssetsBundle),true,"资源文件夹打包");
        window.Show();
    }

    void OnGUI () {

        if (GUI.Button(new Rect(50, 50, 180, 70), "Click to create AssetsBundle"))
        {
            if (defaultPath == "") {
                defaultPath = UnityEngine.Application.dataPath + "/GameAssets/";
            }

            DirectoryInfo mydir = new DirectoryInfo(defaultPath);
            if(!mydir.Exists)
            {
                Toast.instance.ShowMessage ("请先创建资源文件夹",1.5f);
                return;
            } 

            try
            {
                FolderBrowserDialog fbd = new FolderBrowserDialog(); 
                fbd.Description = "选择要打包的资源文件夹"; 
                fbd.ShowNewFolderButton = false;  
                fbd.RootFolder = Environment.SpecialFolder.MyComputer;
                fbd.SelectedPath = defaultPath;  

                if (fbd.ShowDialog() == DialogResult.OK) 
                { 
                    defaultPath = fbd.SelectedPath; 
                    //MessageBox.Show(defaultPath);

                    //获取指定路径下面的所有资源文件  
                    if (Directory.Exists(defaultPath)){  
                        DirectoryInfo direction = new DirectoryInfo(defaultPath);  
                        FileInfo[] files = direction.GetFiles("*",SearchOption.AllDirectories);  

                        Debug.Log(files.Length);  

                        for(int i=0;i                             if (files[i].Name.EndsWith(".meta")){  
                                continue;  
                            }  
                            Debug.Log( "Name:" + files[i].Name );  
                            Debug.Log( "FullName:" + files[i].FullName );  
                            Debug.Log( "DirectoryName:" + files[i].DirectoryName );  

                            BuildPipeline.BuildAssetBundles(UnityEngine.Application.dataPath + "/MyAssetsBundle/", BuildAssetBundleOptions.None, BuildTarget.Android);
                            AssetDatabase.Refresh();//打包后刷新,不加这行代码的话要手动刷新才可以看得到打包后的Assetbundle包
                        }  
                    }
                } 
            }
            catch(Exception e)
            {
                Debug.LogError("打开错误:"+e.Message);
                return;
            }
        }
    }
}
 

你可能感兴趣的:(Unity)