private void AnalyzeAsset(string assetName, Asset hostAsset, DependencyData dependencyData, HashSet <string> scriptAssetNames) { string[] dependencyAssetNames = AssetDatabase.GetDependencies(assetName, false); foreach (string dependencyAssetName in dependencyAssetNames) { if (scriptAssetNames.Contains(dependencyAssetName)) { continue; } if (dependencyAssetName == assetName) { continue; } if (dependencyAssetName.EndsWith(".unity", StringComparison.Ordinal)) { // 忽略对场景的依赖 continue; } Stamp stamp = new Stamp(hostAsset.Name, dependencyAssetName); if (m_AnalyzedStamps.Contains(stamp)) { continue; } m_AnalyzedStamps.Add(stamp); string guid = AssetDatabase.AssetPathToGUID(dependencyAssetName); if (string.IsNullOrEmpty(guid)) { Debug.LogWarning(Utility.Text.Format("Can not find guid by asset '{0}'.", dependencyAssetName)); continue; } Asset asset = m_ResourceCollection.GetAsset(guid); if (asset != null) { dependencyData.AddDependencyAsset(asset); } else { dependencyData.AddScatteredDependencyAsset(dependencyAssetName); List <Asset> scatteredAssets = null; if (!m_ScatteredAssets.TryGetValue(dependencyAssetName, out scatteredAssets)) { scatteredAssets = new List <Asset>(); m_ScatteredAssets.Add(dependencyAssetName, scatteredAssets); } scatteredAssets.Add(hostAsset); AnalyzeAsset(dependencyAssetName, hostAsset, dependencyData, scriptAssetNames); } } }
public Asset GetAsset(string guid) { return(m_ResourceCollection.GetAsset(guid)); }