Пример #1
0
        public void Hanlde(List <AssetFileGroup> input, out List <BundleFile> output)
        {
            output = new List <BundleFile>();
            foreach (var assetFileGroup in input)
            {
                AssetBundleBuild[] assetBundleBuilds = new AssetBundleBuild[1];
                assetBundleBuilds[0].assetBundleName    = assetFileGroup.m_BundleName;
                assetBundleBuilds[0].assetBundleVariant = assetFileGroup.m_BundleVarintsName;
                string[] assetNames = new string[assetFileGroup.m_AssetFiles.Count];
                for (int i = 0; i < assetFileGroup.m_AssetFiles.Count; i++)
                {
                    assetNames[i] = assetFileGroup.m_AssetFiles[i].m_FilePath;
                }
                assetBundleBuilds[0].assetNames = assetNames;


                if (!System.IO.Directory.Exists(m_BundleCachePath))
                {
                    System.IO.Directory.CreateDirectory(m_BundleCachePath);
                }

                AssetBundleManifest manifest = BuildPipeline.BuildAssetBundles(m_BundleCachePath, assetBundleBuilds, m_Options, EditorUserBuildSettings.activeBuildTarget);

                if (manifest != null)
                {
                    foreach (var bundlePath in manifest.GetAllAssetBundles())
                    {
                        BundleFile bundleFile = new BundleFile()
                        {
                            m_BundleName = bundlePath,
                            m_Path       = System.IO.Path.Combine(m_BundleCachePath, bundlePath),
                            m_BFType     = BundleFile.BFType.Bundle
                        };
                        output.Add(bundleFile);
                    }
                }
            }
        }
Пример #2
0
        public void Hanlde(List <AssetFileGroup> input, out List <BundleFile> output)
        {
            string cachePath = System.IO.Path.GetFullPath(m_BundleCachePath);

            AssetBundleBuild[] assetBundleBuilds = new AssetBundleBuild[input.Count];
            output = new List <BundleFile>();
            for (int k = 0; k < input.Count; k++)
            {
                AssetFileGroup assetFileGroup = input[k];

                assetBundleBuilds[k].assetBundleName    = assetFileGroup.m_BundleName;
                assetBundleBuilds[k].assetBundleVariant = assetFileGroup.m_BundleVarintsName;

                List <string> assetsPaths = new List <string>();
                for (int i = 0; i < assetFileGroup.m_AssetFiles.Count; i++)
                {
                    assetsPaths.Add(assetFileGroup.m_AssetFiles[i].m_FilePath);
                }
                assetsPaths.Sort();
                assetBundleBuilds[k].assetNames = assetsPaths.ToArray();
            }

            if (!System.IO.Directory.Exists(cachePath))
            {
                System.IO.Directory.CreateDirectory(cachePath);
            }

            AssetBundleManifest manifest = BuildPipeline.BuildAssetBundles(cachePath, assetBundleBuilds, m_Options, EditorUserBuildSettings.activeBuildTarget);

            if (manifest != null)
            {
                foreach (var bundlePath in manifest.GetAllAssetBundles())
                {
                    BundleFile bundleFile = new BundleFile()
                    {
                        m_BundleName = bundlePath,
                        m_Path       = Path.Combine(cachePath, bundlePath),
                        m_BFType     = BundleFile.BFType.Bundle
                    };
                    output.Add(bundleFile);
                }

                //BundleFile manifestFile = new BundleFile()
                //{
                //    m_BundleName = Path.GetFileName(cachePath),
                //    m_Path = Path.Combine(cachePath ,System.IO.Path.GetFileName(cachePath)),
                //    m_BFType = BundleFile.BFType.Manifest
                //};
                //output.Add(manifestFile);

                string locationPath = Path.Combine(cachePath, "locations");
                WriteLocation(input, manifest, locationPath);

                BundleFile loactions = new BundleFile()
                {
                    m_BundleName = "locations",
                    m_Path       = locationPath,
                    m_BFType     = BundleFile.BFType.Location
                };

                output.Add(loactions);
            }
        }