예제 #1
0
        private static void CollectDependencies(this ResourcesComponent self, List <string> parents, string assetBundleName, Dictionary <string, int> info)
        {
            parents.Add(assetBundleName);
            string[] deps = self.GetDependencies(assetBundleName);
            foreach (string parent in parents)
            {
                if (!info.ContainsKey(parent))
                {
                    info[parent] = 0;
                }

                info[parent] += deps.Length;
            }

            foreach (string dep in deps)
            {
                if (parents.Contains(dep))
                {
                    throw new Exception($"包有循环依赖,请重新标记: {assetBundleName} {dep}");
                }

                self.CollectDependencies(parents, dep, info);
            }

            parents.RemoveAt(parents.Count - 1);
        }
예제 #2
0
        private static string[] GetSortedDependencies(this ResourcesComponent self, string assetBundleName)
        {
            var info    = new Dictionary <string, int>();
            var parents = new List <string>();

            self.CollectDependencies(parents, assetBundleName, info);
            string[] ss = info.OrderBy(x => x.Value).Select(x => x.Key).ToArray();
            return(ss);
        }