private void Awake()
 {
     if (singleton == null)
     {
         singleton = this;
     }
 }
Ejemplo n.º 2
0
    //[MenuItem("Optimize Tools/AssetBundle:Finish Building")]
    static void BreakAssetLink()
    {
        //Get downloading manager
        Scene scene = SceneManager.GetActiveScene();
        AssetBundleDownloadingManager manager = null;

        foreach (var go in scene.GetRootGameObjects())
        {
            manager = go.GetComponentInChildren <AssetBundleDownloadingManager>();
            if (manager != null)
            {
                break;
            }
        }

        if (manager == null)
        {
            Debug.Log("No Downloading Manager found in current scene");
            return;
        }

        if (manager.buildStatus != AssetBundleDownloadingManager.AssetBundleBuiltStatus.BundleCreated)
        {
            Debug.Log("Not in right state to break asset link");
            return;
        }

        if (!manager.allowBreakAssetsLink)
        {
            Debug.Log("Are you certain!!!");
            return;
        }

        manager.allowBreakAssetsLink = false;

        foreach (var a in manager.assetBundleAgents)
        {
            if (a == null)
            {
                continue;
            }
            a.backupDirectRelatedAsset = null;
        }

        manager.buildStatus = AssetBundleDownloadingManager.AssetBundleBuiltStatus.CleanBuilt;
        EditorApplication.MarkSceneDirty();
        EditorApplication.SaveScene();
        AssetDatabase.SaveAssets();
    }
Ejemplo n.º 3
0
    //[MenuItem("Optimize Tools/AssetBundle:Cancel Building")]
    static void CancelAssetBundlesBuild()
    {
        //Get downloading manager
        Scene scene = SceneManager.GetActiveScene();
        AssetBundleDownloadingManager manager = null;

        foreach (var go in scene.GetRootGameObjects())
        {
            manager = go.GetComponentInChildren <AssetBundleDownloadingManager>();
            if (manager != null)
            {
                break;
            }
        }

        if (manager == null)
        {
            Debug.Log("No Downloading Manager found in current scene");
            return;
        }

        if (manager.buildStatus != AssetBundleDownloadingManager.AssetBundleBuiltStatus.BundleCreated)
        {
            Debug.Log("Not in right state to cancel built");
            return;
        }

        foreach (var a in manager.assetBundleAgents)
        {
            if (a == null)
            {
                continue;
            }
            a.CancelBundle();
        }

        var path = GetAssetBundleLoadingPath();

        DeleteDirectory(path);

        manager.assetBundleAgents.Clear();
        manager.buildStatus = AssetBundleDownloadingManager.AssetBundleBuiltStatus.NotBuilt;
        EditorApplication.MarkSceneDirty();
        EditorApplication.SaveScene();
        AssetDatabase.SaveAssets();
    }
Ejemplo n.º 4
0
    //[MenuItem("Optimize Tools/AssetBundle:Start Building")]
    static void BuildAssetBundles()
    {
        var path = GetAssetBundleLoadingPath();

        if (!Directory.Exists(path))
        {
            Directory.CreateDirectory(path);
        }
        //Get downloading manager
        Scene scene = SceneManager.GetActiveScene();
        AssetBundleDownloadingManager manager = null;

        foreach (var go in scene.GetRootGameObjects())
        {
            manager = go.GetComponentInChildren <AssetBundleDownloadingManager>();
            if (manager != null)
            {
                break;
            }
        }

        if (manager == null)
        {
            Debug.Log("No Downloading Manager found in current scene");
            return;
        }

        if (manager.buildStatus != AssetBundleDownloadingManager.AssetBundleBuiltStatus.NotBuilt)
        {
            Debug.Log("Has been built before");
            return;
        }


        //prepare downloading manager data
        manager.BuildAgency();
        bundleDescriptors.Clear();
        bundleBuildIndex = 0;

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

        foreach (var a in manager.assetBundleAgents)
        {
            a.BuildBundle();
        }

        foreach (var b in bundleDescriptors)
        {
            AssetBundleBuild buildMap = new AssetBundleBuild();
            buildMap.assetBundleName = b.bundleName;
            List <string> assetNames = new List <string>();
            assetNames.Add(AssetDatabase.GetAssetPath(b.mainAsset));
            foreach (var r in b.relatedAssets)
            {
                assetNames.Add(AssetDatabase.GetAssetPath(r));
            }
            buildMap.assetNames = assetNames.ToArray();
            buildMaps.Add(buildMap);
        }

        bundleDescriptors.Clear();

        BuildPipeline.BuildAssetBundles(path, buildMaps.ToArray(), BuildAssetBundleOptions.DeterministicAssetBundle, BuildTarget.WebGL);
        manager.buildStatus = AssetBundleDownloadingManager.AssetBundleBuiltStatus.BundleCreated;
        EditorApplication.MarkSceneDirty();
        EditorApplication.SaveScene();
        AssetDatabase.SaveAssets();
    }