Ejemplo n.º 1
0
    public static void ClearOldABNames()
    {
        AssetDatabase.RemoveUnusedAssetBundleNames();
        var names = AssetDatabase.GetAllAssetBundleNames();

        if (names == null || names.Length == 0)
        {
            return;
        }
        ABNameDefineSet defineSet = GetNameDefineSet();

        foreach (var name in names)
        {
            if (defineSet.defineMap.ContainsKey(name))
            {
                continue;
            }
            var paths = AssetDatabase.GetAssetPathsFromAssetBundle(name);
            if (paths == null || paths.Length == 0)
            {
                continue;
            }

            foreach (var path in paths)
            {
                AssetImporter importer = AssetImporter.GetAtPath(path);
                importer.assetBundleName = string.Empty;
            }
        }
        AssetDatabase.RemoveUnusedAssetBundleNames();
    }
Ejemplo n.º 2
0
    public static void ExportABHashs(AssetBundleManifest mainfest, List <Frame.ABFile> abs = null)
    {
        bool save = abs == null;

        if (abs == null)
        {
            abs = abIndex.files;
        }

        abIndex.files.Clear();

        AssetDatabase.RemoveUnusedAssetBundleNames();
        var names = AssetDatabase.GetAllAssetBundleNames();

        ABNameDefineSet defineSet = GetNameDefineSet();

        List <string> garbages = new List <string>();

        foreach (var abName in names)
        {
            FileInfo fileInfo = new FileInfo(Frame.Helper.CombineWithSlash(GetABFloder(), abName));
            if (!fileInfo.Exists)
            {
                List <string> srcfiles = GetErrorABSource(abName);
                if (srcfiles.Count > 0)
                {
                    StringBuilder sb = new StringBuilder();
                    foreach (var file in srcfiles)
                    {
                        sb.Append(string.Format("Error AB Define=>{0},", file));
                    }
                    BuildLog.WriteLine(sb.ToString());
                }
                garbages.Add(abName);
            }
            else
            {
                var info = new Frame.ABFile();
                info.name = abName;
                info.children.AddRange(mainfest.GetAllDependencies(abName));
                info.hash = mainfest.GetAssetBundleHash(abName).ToString();
                info.size = (int)fileInfo.Length;
                try {
                    info.persistent = defineSet.defineMap[abName].persistent;
                } catch (System.Exception ex) {
                    Debug.LogError(string.Format("Path Error! AB name:" + abName));
                }
                mABIndex.files.Add(info);
            }
        }

        if (save)
        {
            SaveABIndex();
        }
    }
Ejemplo n.º 3
0
    static ABNameDefineSet GetNameDefineSet()
    {
        if (!TipFileNotExist(GameOption.BuildOption.abNamesFile))
        {
            return(null);
        }
        string          content   = File.ReadAllText(GameOption.BuildOption.abNamesFile);
        ABNameDefineSet defineSet = JsonUtility.FromJson <ABNameDefineSet>(content);

        return(defineSet);
    }
Ejemplo n.º 4
0
    public static void SetAllABNames()
    {
        ABNameDefineSet defineSet = GetNameDefineSet();

        foreach (var def in defineSet.defines)
        {
            foreach (var path in def.resources)
            {
                SetABName(path, def.abName);
            }
        }
    }
Ejemplo n.º 5
0
    public static void ExportABNames()
    {
        if (!TipFileNotExist(GameOption.BuildOption.abDependenceFile))
        {
            return;
        }

        ABGraph graph = new ABGraph();
        var     nodes = graph.LoadFromJson(GameOption.BuildOption.abDependenceFile);

        nodes.Sort((a, b) => a.path.CompareTo(b.path));
        var contents = graph.GenerateContent(nodes);

        ABNameDefineSet defineSet = new ABNameDefineSet();

        foreach (var content in contents)
        {
            string sceneName = content.GetScene();
            if (string.IsNullOrEmpty(sceneName))
            {
                ABNameDefine def = new ABNameDefine();
                def.abName     = GetNameFromGame(content.name);
                def.persistent = content.persistent;
                def.resources.AddRange(content.GetAllPaths());
                defineSet.defines.Add(def);
            }
            else
            {
                ABNameDefine sceneDef = new ABNameDefine();
                sceneDef.abName     = GetNameFromGame("Scene_" + content.name);
                sceneDef.persistent = false;
                sceneDef.resources.Add(sceneName);
                defineSet.defines.Add(sceneDef);

                ABNameDefine def = new ABNameDefine();
                def.abName     = GetNameFromGame(content.name);
                def.persistent = content.persistent;
                def.resources.AddRange(content.GetAllPathsWithoutScene());
                defineSet.defines.Add(def);
            }
        }

        //Cannot mark assets and scenes in one AssetBundle.


        string text = JsonUtility.ToJson(defineSet, true);

        File.WriteAllText(GameOption.BuildOption.abNamesFile, text);
    }