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); }
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); }