Пример #1
0
    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;
        }
    }
Пример #2
0
    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);
    }
Пример #3
0
    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);
    }