示例#1
0
    public AssetBundleIndex GetIncrementResourceList(AssetBundleIndex list0, AssetBundleIndex list1)
    {
        if (list1 == null)
        {
            return(null);
        }

        Dictionary <string, ABFile> map0 = list0 == null ? null : list0.abMap;
        Dictionary <string, ABFile> map1 = list1.abMap;

        AssetBundleIndex incremetList = new AssetBundleIndex();

        foreach (var data in map1)
        {
            ABFile info = null;

            if (map0 == null || !map0.TryGetValue(data.Key, out info) || info.hash != data.Value.hash)
            {
                incremetList.files.Add(data.Value);
            }
        }
        return(incremetList);
    }
示例#2
0
    private static void refresh()
    {
        string path = System.IO.Path.Combine(Application.dataPath, "Packages");

        DirectoryInfo test = new DirectoryInfo(path);

        if (test.Exists)
        {
            foreach (string group in Directory.GetDirectories(path))
            {
                string groupname = Path.GetFileName(group);

                foreach (string package in Directory.GetDirectories(group))
                {
                    string packagename = Path.GetFileName(package);

                    List <string> files = new List <string>();
                    ABPack        pack  = null;

                    string mfPath  = Path.Combine(package, "_manifest.asset");
                    string mfAsset = string.Format("Assets/Packages/{0}/{1}/_manifest.asset", groupname, packagename);
                    if (!File.Exists(mfPath))
                    {
                        pack      = ScriptableObject.CreateInstance <ABPack>();
                        pack.uuid = packagename;
                        pack.path = groupname;
                        AssetDatabase.CreateAsset(pack, mfAsset);
                    }
                    else
                    {
                        pack      = AssetDatabase.LoadAssetAtPath <ABPack>(mfAsset);
                        pack.uuid = packagename;
                        pack.path = groupname;
                    }

                    foreach (string file in Directory.GetFiles(package))
                    {
                        string filename = Path.GetFileName(file);

                        //ignore unity's meta file
                        if (file.EndsWith(".meta"))
                        {
                            continue;
                        }

                        if (Path.GetFileName(file).Equals("_manifest.asset"))
                        {
                            continue;
                        }

                        string assetPath = string.Format("Assets/Packages/{0}/{1}/{2}", groupname, packagename, filename);
                        AssetImporter.GetAtPath(assetPath).SetAssetBundleNameAndVariant(packagename, "");
                        files.Add(Path.GetFileName(file));
                    }

                    if (null == pack)
                    {
                        continue;
                    }

                    Dictionary <string, ABFile> abFiles = new Dictionary <string, ABFile>();
                    foreach (ABFile abFile in pack.files)
                    {
                        abFiles.Add(abFile.name, abFile);
                    }
                    pack.files.Clear();

                    foreach (string file in files)
                    {
                        ABFile abFile = new ABFile();
                        abFile.name = Path.GetFileNameWithoutExtension(file);
                        abFile.code = ToUUID(string.Format("{0}.{1}", packagename, abFile.name));
                        if (abFiles.ContainsKey(abFile.name))
                        {
                            abFile.alias = abFiles[abFile.name].alias;
                        }
                        pack.files.Add(abFile);
                    }
                }
            }
        }
        else
        {
            Debug.Log("Without this directory...");
        }

        AssetDatabase.RemoveUnusedAssetBundleNames();
        AssetDatabase.SaveAssets();
        AssetDatabase.Refresh();

        Debug.Log("refresh finish");
    }