Created
December 29, 2021 06:55
-
-
Save badforlabor/b28a14fad3992b31139ceba07eb52ab0 to your computer and use it in GitHub Desktop.
检查assetbundle的重复依赖
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| if (GUILayout.Button("检查重复依赖")) | |
| { | |
| // 如果某个资源即在ab1中,又在ab2中,就是重复依赖了 | |
| var self = target as CheckDuplicatedDeps; | |
| var abMapping = new Dictionary<string, HashSet<string>>(); | |
| System.Action<string, string> addMaping = (string a, string b) => | |
| { | |
| if (!abMapping.ContainsKey(a)) | |
| { | |
| abMapping.Add(a, new HashSet<string>()); | |
| } | |
| abMapping[a].Add(b); | |
| }; | |
| foreach (var abName in self.ObjList) | |
| { | |
| var abAllDeps = new HashSet<string>(); | |
| var filesInAb = AssetDatabase.GetAssetPathsFromAssetBundle(abName); | |
| foreach (var fileName in filesInAb) | |
| { | |
| abAllDeps.AddRange(AssetDatabase.GetDependencies(fileName)); | |
| } | |
| // var sb = new StringBuilder(); | |
| // sb.AppendLine($"[{abName}] dep-files:" ); | |
| foreach (var it in abAllDeps) | |
| { | |
| // 获取所在的assetbundle的名字。如果为空,说明是属于当前assetbundle。 | |
| var depAbName = AssetDatabase.GetImplicitAssetBundleName(it); | |
| if (string.IsNullOrEmpty(depAbName)) | |
| { | |
| depAbName = abName; | |
| } | |
| addMaping(it, depAbName); | |
| // sb.AppendLine($"/t{it}, dep-ab={depAbName}"); | |
| } | |
| // Debug.Log(sb); | |
| } | |
| { | |
| var sb = new StringBuilder(); | |
| sb.AppendLine("冲突检查结果:"); | |
| System.Func<HashSet<string>, string> dumpSet = (v) => | |
| { | |
| var sb2 = new StringBuilder(); | |
| foreach (var it in v) | |
| { | |
| if (sb2.Length > 0) | |
| { | |
| sb2.Append(", "); | |
| } | |
| sb2.Append(it); | |
| } | |
| return sb2.ToString(); | |
| }; | |
| foreach (var it in abMapping) | |
| { | |
| if (it.Value.Count > 1) | |
| { | |
| sb.AppendLine($"{it.Key}, conflict:[{dumpSet(it.Value)}]"); | |
| } | |
| } | |
| Debug.Log(sb); | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment