static public void CreateBundleList(ABBuildInfo buildInfo)
        {
            BundleVersionList bundleList = new BundleVersionList();

            bundleList.BundlesList = new List <URLVersionPair>();
            List <BundleInfo> list = new List <BundleInfo>();

            GetAllBundle(Model.m_RootLevelBundles.GetChildList(), list);
            foreach (var item in list)
            {
                bundleList.BundlesList.Add(new URLVersionPair()
                {
                    URL         = item.m_Name.fullNativeName,
                    NewCRC      = File.ReadAllBytes(buildInfo.outputDirectory + "/" + item.m_Name.fullNativeName).GetHashCode(),
                    PreDownload = item.proLoad
                });
            }

            string       json_text  = LitJson.JsonMapper.ToJson(bundleList);
            StreamWriter fileWriter = new StreamWriter(buildInfo.outputDirectory + "/BundleList.json");

            fileWriter.WriteLine(json_text);
            fileWriter.Close();
            fileWriter.Dispose();

            AssetDatabase.Refresh();
        }
Exemple #2
0
        public bool BuildAssetBundles(ABBuildInfo info)
        {
            if (info == null)
            {
                Debug.Log("Error in build");
                return(false);
            }

            var manifest = BuildScript.GetManifest();

            BuildScript.RemoveUnusedAssetBundleNames();

            var assets           = manifest.assets;
            var assetBundleNames = manifest.bundles;
            var dirs             = manifest.dirs;

            var map = new Dictionary <string, List <string> >();

            foreach (var item in manifest.bundles)
            {
                map[item] = new List <string>();
            }

            foreach (var item in assets)
            {
                var assetPath = dirs[item.dir] + "/" + item.name;
                map[assetBundleNames[item.bundle]].Add(assetPath);
            }

            List <AssetBundleBuild> builds = new List <AssetBundleBuild>();

            foreach (var item in map)
            {
                builds.Add(new AssetBundleBuild()
                {
                    assetBundleName = item.Key,
                    assetNames      = item.Value.ToArray()
                });
            }

            var buildManifest = BuildPipeline.BuildAssetBundles(info.outputDirectory, builds.ToArray(), info.options, info.buildTarget);

            if (buildManifest == null)
            {
                Debug.Log("Error in build");
                return(false);
            }

            foreach (var assetBundleName in buildManifest.GetAllAssetBundles())
            {
                if (info.onBuild != null)
                {
                    info.onBuild(assetBundleName);
                }
            }
            return(true);
        }
Exemple #3
0
        private void ExecuteSetAssetBundleName()
        {
            AssetBundleBuilder builder     = new AssetBundleBuilder();
            ABBuildInfo        abBuildInfo = new ABBuildInfo();

            abBuildInfo.buildFolderList = m_UserData.m_BuildFolderList;
            builder.SetAssetBundleNames(abBuildInfo);
            AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate);
        }
    public static void Build(string platform, bool clearFloder)
    {
        AssetDatabase.Refresh(ImportAssetOptions.ForceSynchronousImport);

        var outputPath = OUTPUT_PATH + platform;

        BuildTarget buildTarget = buildTargets[platforms.ToList().IndexOf(platform)];

        //1. clear old abs
        if (clearFloder)
        {
            Debug.Log("Clear folder:" + outputPath);
            if (Directory.Exists(outputPath))
            {
                Directory.Delete(outputPath, true);
            }
            Directory.CreateDirectory(outputPath);
        }
        else
        {
            if (!Directory.Exists(outputPath))
            {
                Directory.CreateDirectory(outputPath);
            }
        }

        //2. build abs
        BuildAssetBundleOptions opt = BuildAssetBundleOptions.ChunkBasedCompression;

        ABBuildInfo buildInfo = new ABBuildInfo();

        buildInfo.outputDirectory = outputPath;
        buildInfo.options         = opt;
        buildInfo.buildTarget     = buildTarget;

        AssetBundleBrowser.AssetBundleModel.Model.DataSource.BuildAssetBundles(buildInfo);


        AssetDatabase.Refresh(ImportAssetOptions.ForceSynchronousImport);


        RemoveManifestFiles(outputPath);
    }
Exemple #5
0
        public void SetAssetBundleNames(ABBuildInfo buildInfo)
        {
            mAbBuildInfo = buildInfo;

            mDependciesFolder = mAbBuildInfo.buildFolderList;
            mSingleFolder     = mAbBuildInfo.buildFolderList.FindAll(bf => bf.SingleAssetBundle);

            mBuildMap.Clear();
            mLeafNodes.Clear();
            mAllAssetNodes.Clear();

            CollectDependcy();
            BuildResourceBuildMap();
            CollectSingle();
            SetAssetBundleNames();

            AssetDatabase.SaveAssets();
            AssetDatabase.Refresh();
        }
Exemple #6
0
        public static void Build()
        {
            // copy ui form client to resource
            CopyUIFormClientToResource();

            string outPath = GetAssetBundleOutPath();

            if (!Directory.Exists(outPath))
            {
                Directory.CreateDirectory(outPath);
            }

            ABBuildInfo buildInfo = new ABBuildInfo();

            buildInfo.outputDirectory = outPath;
            buildInfo.options         = BuildAssetBundleOptions.ChunkBasedCompression;
            buildInfo.buildTarget     = EditorUserBuildSettings.activeBuildTarget;

            AssetBundleBrowser.AssetBundleModel.Model.DataSource.BuildAssetBundles(buildInfo);
            AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate);
        }
Exemple #7
0
        private void ExecuteBuild()
        {
            if (AssetBundleModel.Model.DataSource.CanSpecifyBuildOutputDirectory)
            {
                if (string.IsNullOrEmpty(m_UserData.m_OutputPath))
                {
                    BrowseForFolder();
                }

                if (string.IsNullOrEmpty(m_UserData.m_OutputPath)) //in case they hit "cancel" on the open browser
                {
                    Debug.LogError("AssetBundle Build: No valid output path for build.");
                    return;
                }

                if (m_ForceRebuild.state)
                {
                    string message = "Do you want to delete all files in the directory " + m_UserData.m_OutputPath;
                    if (m_CopyToStreaming.state)
                    {
                        message += " and " + m_streamingPath;
                    }
                    message += "?";
                    if (EditorUtility.DisplayDialog("File delete confirmation", message, "Yes", "No"))
                    {
                        try
                        {
                            if (Directory.Exists(m_UserData.m_OutputPath))
                            {
                                Directory.Delete(m_UserData.m_OutputPath, true);
                            }

                            if (m_CopyToStreaming.state)
                            {
                                if (Directory.Exists(m_streamingPath))
                                {
                                    Directory.Delete(m_streamingPath, true);
                                }
                            }
                        }
                        catch (System.Exception e)
                        {
                            Debug.LogException(e);
                        }
                    }
                }
                if (!Directory.Exists(m_UserData.m_OutputPath))
                {
                    Directory.CreateDirectory(m_UserData.m_OutputPath);
                }
            }

            BuildAssetBundleOptions opt = BuildAssetBundleOptions.None;

            if (AssetBundleModel.Model.DataSource.CanSpecifyBuildOptions)
            {
                if (m_UserData.m_Compression == CompressOptions.Uncompressed)
                {
                    opt |= BuildAssetBundleOptions.UncompressedAssetBundle;
                }
                else if (m_UserData.m_Compression == CompressOptions.ChunkBasedCompression)
                {
                    opt |= BuildAssetBundleOptions.ChunkBasedCompression;
                }
                foreach (var tog in m_ToggleData)
                {
                    if (tog.state)
                    {
                        opt |= tog.option;
                    }
                }
            }

            ABBuildInfo buildInfo = new ABBuildInfo();

            buildInfo.outputDirectory = m_UserData.m_OutputPath;
            buildInfo.options         = opt;
            buildInfo.buildTarget     = (BuildTarget)m_UserData.m_BuildTarget;
            buildInfo.onBuild         = (assetBundleName) =>
            {
                if (m_InspectTab == null)
                {
                    return;
                }
                m_InspectTab.AddBundleFolder(buildInfo.outputDirectory);
                m_InspectTab.RefreshBundles();
            };

            AssetBundleModel.Model.DataSource.BuildAssetBundles(buildInfo);

            AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate);

            if (m_CopyToStreaming.state)
            {
                DirectoryCopy(m_UserData.m_OutputPath, m_streamingPath);
            }
        }
        private void ExecuteBuild()
        {
            if (AssetBundleModel.Model.DataSource.CanSpecifyBuildOutputDirectory)
            {
                if ((int)EditorUserBuildSettings.activeBuildTarget != (int)m_UserData.m_BuildTarget)
                {
                    if (!EditorUtility.DisplayDialog("Switch Platform confirm",
                                                     string.Format("Current activeBuildTarget is {0},doesn't match {1} .",
                                                                   EditorUserBuildSettings.activeBuildTarget, m_UserData.m_BuildTarget), "Yes", "No"))
                    {
                        return;
                    }
                }

                if (string.IsNullOrEmpty(m_UserData.m_OutputPath))
                {
                    BrowseForFolder();
                }

                if (string.IsNullOrEmpty(m_UserData.m_OutputPath)) //in case they hit "cancel" on the open browser
                {
                    Debug.LogError("AssetBundle Build: No valid output path for build.");
                    return;
                }
            }

            if (m_ForceRebuild.state)
            {
                var tempOutputClear = Directory.Exists(m_UserData.m_OutputPath) ? m_UserData.m_OutputPath : string.Empty;
                var tempStreamClear = m_CopyToStreaming.state && Directory.Exists(m_streamingPath) ? m_UserData.m_OutputPath : string.Empty;

                var tempSkip = false;
                var message  = "Do you want to delete all files in the directory ";
                if (!string.IsNullOrEmpty(tempOutputClear))
                {
                    message += m_UserData.m_OutputPath;

                    if (m_CopyToStreaming.state && !string.IsNullOrEmpty(tempStreamClear))
                    {
                        message += " and " + m_streamingPath;
                    }
                }
                else if (m_CopyToStreaming.state && !string.IsNullOrEmpty(tempStreamClear))
                {
                    message += m_streamingPath;
                }
                else
                {
                    tempSkip = true;
                }

                if (!tempSkip)
                {
                    message += "?";
                    if (EditorUtility.DisplayDialog("File delete confirmation", message, "Yes", "No"))
                    {
                        try
                        {
                            if (Directory.Exists(m_UserData.m_OutputPath))
                            {
                                Directory.Delete(m_UserData.m_OutputPath, true);
                            }

                            if (m_CopyToStreaming.state)
                            {
                                if (Directory.Exists(m_streamingPath))
                                {
                                    Directory.Delete(m_streamingPath, true);
                                }
                            }
                        }
                        catch (System.Exception e)
                        {
                            Debug.LogException(e);
                        }
                    }
                }
            }

            if (!Directory.Exists(m_UserData.m_OutputPath))
            {
                Directory.CreateDirectory(m_UserData.m_OutputPath);
            }

            EditorUtility.DisplayProgressBar("Build AssetBundle", "prepare...", 0);

            BuildAssetBundleOptions opt = BuildAssetBundleOptions.None;

            if (AssetBundleModel.Model.DataSource.CanSpecifyBuildOptions)
            {
                if (m_UserData.m_Compression == CompressOptions.Uncompressed)
                {
                    opt |= BuildAssetBundleOptions.UncompressedAssetBundle;
                }
                else if (m_UserData.m_Compression == CompressOptions.ChunkBasedCompression)
                {
                    opt |= BuildAssetBundleOptions.ChunkBasedCompression;
                }
                foreach (var tog in m_ToggleData)
                {
                    if (tog.state)
                    {
                        opt |= tog.option;
                    }
                }
            }

            var tempBuildRet = false;

            try
            {
                var buildInfo = new ABBuildInfo()
                {
                    outputDirectory = m_UserData.m_OutputPath,
                    options         = opt,
                    buildTarget     = (BuildTarget)m_UserData.m_BuildTarget,
                };
                buildInfo.onBuild = (assetBundleName) =>
                {
                    if (m_InspectTab == null)
                    {
                        return;
                    }
                    m_InspectTab.AddBundleFolder(buildInfo.outputDirectory);
                    m_InspectTab.RefreshBundles();
                };

                EditorUtility.DisplayProgressBar("Build AssetBundle", "Clear Inspector Selection...", 0.1f);
                Selection.activeObject = null;
                AssetBundleBrowserMain.instance.m_InspectTab.ClearData();

                EditorUtility.DisplayProgressBar("Build AssetBundle", "BuildAssetBundles ...", 0.2f);
                tempBuildRet = AssetBundleModel.Model.DataSource.BuildAssetBundles(buildInfo);

                EditorUtility.DisplayProgressBar("Build AssetBundle", "BuildAssetBundles ...", 0.6f);

                if (tempBuildRet)
                {
                    if (m_ClearManifest.state)
                    {
                        EditorUtility.DisplayProgressBar("Build AssetBundle", "ClearManifest ...", 0.7f);
                        MiscUtils.ClearManifestByPath(m_UserData.m_OutputPath);
                    }

                    if (m_CopyToStreaming.state)
                    {
                        EditorUtility.DisplayProgressBar("Build AssetBundle", "Copy to Streaming Path...", 0.8f);
                        DirectoryCopy(m_UserData.m_OutputPath, m_streamingPath);
                    }
                }

                EditorUtility.DisplayProgressBar("Build AssetBundle", "Refresh  AssetDatabase...", 0.9f);
                AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate);
            }
            catch (System.Exception e)
            {
                Debug.LogException(e);
            }
            finally
            {
                EditorUtility.ClearProgressBar();
            }

            AssetBundleBrowserMain.instance.ShowNotification(new GUIContent(tempBuildRet ? "BuildAssetBundle Finished." : "BuildAssetBundle failed."));
        }
Exemple #9
0
        private void ExecuteBuild()
        {
            var prebuildTime = System.DateTime.Now;

            if (AssetBundleModel.Model.DataSource.CanSpecifyBuildOutputDirectory)
            {
                if (m_ForceRebuild.state)
                {
                    string message = "Do you want to delete all files in the directory " + Constants.BuildPath + "?";
                    if (EditorUtility.DisplayDialog("File delete confirmation", message, "Yes", "No"))
                    {
                        try
                        {
                            if (Directory.Exists(Constants.BuildPath))
                            {
                                Directory.Delete(Constants.BuildPath, true);
                            }
                        }
                        catch (System.Exception e)
                        {
                            Debug.LogException(e);
                        }
                    }
                }
                if (!Directory.Exists(Constants.BuildPath))
                {
                    Directory.CreateDirectory(Constants.BuildPath);
                }
            }

            BuildAssetBundleOptions opt = BuildAssetBundleOptions.None;

            if (AssetBundleModel.Model.DataSource.CanSpecifyBuildOptions)
            {
                opt |= BuildAssetBundleOptions.UncompressedAssetBundle;

                foreach (var tog in m_ToggleData)
                {
                    if (tog.state)
                    {
                        opt |= tog.option;
                    }
                }
            }

            ABBuildInfo buildInfo = new ABBuildInfo();

            buildInfo.outputDirectory = Constants.BuildPath;
            buildInfo.options         = opt;
            buildInfo.buildTarget     = BuildTarget.StandaloneWindows;
            buildInfo.onBuild         = (assetBundleName) =>
            {
                if (m_InspectTab == null)
                {
                    return;
                }
                m_InspectTab.AddBundleFolder(buildInfo.outputDirectory);
                m_InspectTab.RefreshBundles();
            };

            AssetBundleModel.Model.DataSource.BuildAssetBundles(buildInfo);

            DirectoryInfo di           = new DirectoryInfo(buildInfo.outputDirectory);
            List <string> changedFiles = di.GetFiles("*.unity3d", SearchOption.AllDirectories).Where(x => x.LastWriteTime >= prebuildTime).Select(x => x.FullName).ToList();

            AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate);

            SB3UScript.BuildAndRunScripts(Constants.BuildPath, m_UserData.m_KoikatsuPath, m_UserData.m_Compression, changedFiles);

            if (changedFiles.Count == 1)
            {
                Debug.Log("Successfully built 1 asset bundle.");
            }
            else
            {
                Debug.Log("Successfully built " + changedFiles.Count + " asset bundles.");
            }
        }
 public bool BuildAssetBundles(ABBuildInfo info)
 {
     Debug.Log("hahhshiehf");
     // throw new System.NotImplementedException();
     return(true);
 }