Ejemplo n.º 1
0
        static void BuildAssetBundles()
        {
            AssetBundleBuildConfig config = LoadAssetAtPath <AssetBundleBuildConfig>(savePath);

            if (config == null)
            {
                return;
            }

#if UNITY_5 || UNITY_2017_1_OR_NEWER
            ABBuilder builder = new AssetBundleBuilder5x();
#else
            ABBuilder builder = new AssetBundleBuilder4x(new AssetBundlePathResolver());
#endif
            builder.SetDataWriter(config.depInfoFileFormat == AssetBundleBuildConfig.Format.Text ? new AssetBundleDataWriter() : new AssetBundleDataBinaryWriter());

            builder.Begin();
            BuildAssetBundleOptions opt = BuildAssetBundleOptions.None;
            if (config.m_Compression == AssetBundleBuildConfig.CompressOptions.Uncompressed)
            {
                opt |= BuildAssetBundleOptions.UncompressedAssetBundle;
            }
            else if (config.m_Compression == AssetBundleBuildConfig.CompressOptions.ChunkBasedCompression)
            {
                opt |= BuildAssetBundleOptions.ChunkBasedCompression;
            }

            builder.option = opt;

            for (int i = 0; i < config.filters.Count; i++)
            {
                AssetBundleFilter f = config.filters[i];
                if (f.valid)
                {
                    builder.AddRootTargets(new DirectoryInfo(f.path), new string[] { f.filter });
                }
            }

            builder.Export();
            builder.End();
        }