示例#1
0
        private static void ExtractReferenceInfo(ResConfig resConfig, List <AssetItem> lstAssetItem)
        {
            SetProgress("收集文件引用信息...", 0.3f);
            for (int i = 0; i < lstAssetItem.Count; ++i)
            {
                AssetItem          assetItem     = lstAssetItem[i];
                AssetReferenceInfo referenceInfo = GetAssetReferenceInfo(assetItem);
                if (referenceInfo.lstReferences.Count > 0)
                {
                    resConfig.lstAssetReferenceInfos.Add(referenceInfo);
                    foreach (string referenceAssetGUID in referenceInfo.lstReferences)
                    {
                        //if (IsContainsItemGUID(resConfig.lstExternalAssetItems, referenceAssetGUID))
                        if (IsContainsItemGUID(resConfig.lstAssetItems, referenceAssetGUID))
                        {
                            continue;
                        }

                        AssetItem referenceAssetItem = GetAssetItemFromGUID(EAssetType.Reference, referenceAssetGUID);
                        if (referenceAssetItem != null)
                        {
                            resConfig.lstAssetItems.Add(referenceAssetItem);
                        }
                        //resConfig.lstExternalAssetItems.Add(referenceAssetItem);
                    }
                }
                SetProgress("收集文件引用信息...", sProgress + 0.7f / lstAssetItem.Count);
            }
        }
        /// <summary>
        /// 提取资源文件的引用关系
        /// </summary>
        /// <param name="resConfig"></param>
        /// <param name="lstAssetItem"></param>
        private static void ExtractReferenceInfo(ResConfig resConfig, List <AssetItem> lstAssetItem)
        {
            SetProgress("收集文件引用信息...", 0.3f);
            for (int i = 0; i < lstAssetItem.Count; ++i)
            {
                AssetItem assetItem = lstAssetItem[i];

                var referenceInfo = new AssetReferenceInfo()
                {
                    guid = assetItem.guid
                };
                string[] dependentAsset = AssetDatabase.GetDependencies(assetItem.path).Where(item => !item.EndsWith(".cs") && !item.EndsWith(".js")).ToArray();;
                foreach (string asset in dependentAsset)
                {
                    string guid = AssetDatabase.AssetPathToGUID(asset);
                    if (!referenceInfo.lstReferences.Contains(guid))
                    {
                        referenceInfo.lstReferences.Add(guid);
                    }

                    if (!IsContainsItemGUID(resConfig.lstAssetItems, guid))
                    {
                        AssetItem referenceItem = new AssetItem(EAssetType.Reference, guid, asset);
                        resConfig.lstAssetItems.Add(referenceItem);
                    }
                }
                if (referenceInfo.lstReferences.Count > 0)
                {
                    resConfig.lstAssetReferenceInfos.Add(referenceInfo);
                }

                SetProgress("收集文件引用信息...", sProgress + 0.7f / lstAssetItem.Count);
            }
        }
示例#3
0
        /// <summary>
        /// 提取某个Asset 的引用信息
        /// </summary>
        /// <param name="assetItem"></param>
        /// <returns></returns>
        private static AssetReferenceInfo GetAssetReferenceInfo(AssetItem assetItem)
        {
            var referenceInfo = new AssetReferenceInfo()
            {
                guid = assetItem.guid
            };

            string solutePath = PROJECT_PATH + assetItem.path;

            using (StreamReader reader = new StreamReader(solutePath))
            {
                string firstLine = reader.ReadLine();
                if (firstLine.Contains("YAML"))
                {
                    foreach (AssetItem referenceItem in ExtractAssetItemFromFile(solutePath))
                    {
                        if (!referenceInfo.lstReferences.Contains(referenceItem.guid))
                        {
                            referenceInfo.lstReferences.Add(referenceItem.guid);
                        }
                    }
                }

                string metaFilePath = AssetDatabase.GetTextMetaFilePathFromAssetPath(assetItem.path);
                foreach (AssetItem referenceItem in ExtractAssetItemFromFile(metaFilePath))
                {
                    if (!referenceInfo.lstReferences.Contains(referenceItem.guid))
                    {
                        referenceInfo.lstReferences.Add(referenceItem.guid);
                    }
                }
            }
            return(referenceInfo);
        }