static void BuildAssetBundles()
        {
            if (EditorApplication.isPlayingOrWillChangePlaymode)
            {
                Debug.LogError("Exit play mode before build AssetBundle!");
                return;
            }
            AssetBundleManager.Log("building... cur Time " + Time.realtimeSinceStartup);
            AssetBundleBuildConfig config = LoadAssetAtPath <AssetBundleBuildConfig>(savePath);

            if (config == null)
            {
                return;
            }

            ABBuilder builder = new AssetBundleBuilder5x(new AssetBundlePathResolver());

            builder.SetDataWriter(config.depInfoFileFormat == AssetBundleBuildConfig.Format.Text ? new AssetBundleDataWriter() : new AssetBundleDataBinaryWriter());

            builder.Begin();

            for (int i = 0; i < config.filters.Count; i++)
            {
                AssetBundleFilter f = config.filters[i];
                if (f.valid)
                {
                    builder.AddRootTargets(new DirectoryInfo(f.path), f.packMode, f.filter);
                }
            }
            AssetBundleManager.Log("building... cur Time " + Time.realtimeSinceStartup);
            builder.Export();
            AssetBundleManager.Log("building... cur Time " + Time.realtimeSinceStartup);
            builder.End();
            AssetBundleManager.Log("building... cur Time " + Time.realtimeSinceStartup);
        }