static private void AnalyseAtlasReferenceFromAssets(Dictionary <object, object> fileData, out AtlasReferenceInfo referenceInfo) { referenceInfo = new AtlasReferenceInfo(); if (null == fileData) { return; } foreach (var item in fileData) { string keyStr = item.Key as string; if (string.IsNullOrEmpty(keyStr)) { continue; } if (keyStr.StartsWith("MonoBehaviour")) { Dictionary <object, object> MonoData = item.Value as Dictionary <object, object>; if (null == MonoData) { continue; } KeyValuePair <string, List <string> > newInfo; AnalyseAtlasReferenceFromMono(MonoData, out newInfo); if (!string.IsNullOrEmpty(newInfo.Key)) { List <string> spriteNameTbl = null; if (referenceInfo.RefAtlasTbl.TryGetValue(newInfo.Key, out spriteNameTbl)) { foreach (var infoItem in newInfo.Value) { if (!spriteNameTbl.Contains(infoItem)) { spriteNameTbl.Add(infoItem); } } } else { referenceInfo.RefAtlasTbl.Add(newInfo.Key, newInfo.Value); } } } } if (0 == referenceInfo.RefAtlasTbl.Count) { referenceInfo = null; } }
static public void AnalyseAtlasReferenceInfo(string filePath, out AtlasReferenceInfo referenceInfo) { referenceInfo = null; if (string.IsNullOrEmpty(filePath)) { return; } Dictionary <object, object> dataTbl = null; AnalysePrefabData(filePath, out dataTbl); AnalyseAtlasReferenceFromAssets(dataTbl, out referenceInfo); }
public REFERENCE_ANALYSE_ERROR_TYPE AnalyseDependency(out DependencyInfo dependencyInfo) { REFERENCE_ANALYSE_ERROR_TYPE errorType = REFERENCE_ANALYSE_ERROR_TYPE.REFERENCE_ANALYSE_ERROR_NONE; dependencyInfo = new DependencyInfo(); do { errorType = CheckDependencyInput(); if (IsAnalserFailed(errorType)) { break; } string configDir = UIAtlasEditorConfig.ReferenceResultPath; AtlasReferenceFilter filter = new AtlasReferenceFilter(configDir); List <string> assetPathTbl = GetAllAssetFilePath(); AnnalyseReferenceProgresser.GetInstance().InitProgresser(assetPathTbl.Count, "正向引用导出中"); int count = 1; foreach (var item in assetPathTbl) { AtlasReferenceInfo newInfo = null; if ( //YAMLAnalyser.IsAtlasPrefab(item) !filter.CheckDependencyFilter(item) ) { YAMLAnalyser.AnalyseAtlasReferenceInfo(item, out newInfo); if (newInfo != null) { dependencyInfo.DependencyInfoTbl.Add(item, newInfo); } } AnnalyseReferenceProgresser.GetInstance().UpdateProgress(count++); } } while (false); return(errorType); }