public static AudioInfo CreateAudioInfo(string assetPath) { if (!EditorPath.IsAudio(assetPath)) { return(null); } AudioInfo audioInfo = null; if (!_dictAudioInfo.TryGetValue(assetPath, out audioInfo)) { audioInfo = new AudioInfo(); _dictAudioInfo.Add(assetPath, audioInfo); } AudioImporter audioImporter = AssetImporter.GetAtPath(assetPath) as AudioImporter; AudioClip audioClip = AssetDatabase.LoadAssetAtPath <AudioClip>(assetPath); if (audioImporter == null || audioClip == null) { Debug.LogError("audioImporter is empty"); return(null); } audioInfo.Path = assetPath; audioInfo.ForceToMono = audioImporter.forceToMono; audioInfo.LoadInBackground = audioImporter.loadInBackground; audioInfo.Ambisonic = audioImporter.ambisonic; audioInfo.MemSize = EditorTool.GetRuntimeMemorySize(audioClip); audioInfo.ImportedSize = EditorTool.GetRuntimeMemorySize(audioClip); audioInfo.StandAloneAudioClipLoadType = audioImporter.GetOverrideSampleSettings("Standalone").loadType; audioInfo.AndroidAudioClipLoadType = audioImporter.GetOverrideSampleSettings("Android").loadType; audioInfo.iOSAudioClipLoadType = audioImporter.GetOverrideSampleSettings("iOS").loadType; audioInfo.StandAloneAudioCompressionFormat = audioImporter.GetOverrideSampleSettings("Standalone").compressionFormat; audioInfo.AndroidAudioCompressionFormat = audioImporter.GetOverrideSampleSettings("Android").compressionFormat; audioInfo.iOSAudioCompressionFormat = audioImporter.GetOverrideSampleSettings("iOS").compressionFormat; audioInfo.OriginSize = ViewerConst.GetInternalValue <int>(audioImporter, "get_origSize", null); audioInfo.CompressedSize = ViewerConst.GetInternalValue <int>(audioImporter, "get_compSize", null); if (++_loadCount % 256 == 0) { Resources.UnloadUnusedAssets(); } return(audioInfo); }
public static long CalcAssetSize(string assetPath, BundleType type) { assetPath = EditorPath.FormatAssetPath(assetPath); assetPath = EditorPath.NormalizePathSplash(assetPath); long ret = 0; if (m_pathFileSize.TryGetValue(assetPath, out ret)) { return(ret); } BundleImportData assetImportData = BundleDataControl.Instance.GetPathImportData(assetPath); UnityEngine.Object[] assets = null; switch (type) { case BundleType.Texture: assets = AssetDatabase.LoadAllAssetsAtPath(assetPath); for (int i = 0; i < assets.Length; ++i) { if (assets[i] is Texture) { ret += EditorTool.GetRuntimeMemorySize(assets[i]); } } break; case BundleType.Material: string[] deps = AssetDepot.GetDependenciesCache(assetPath); for (int i = 0; i < deps.Length; ++i) { if (EditorPath.IsTexture(deps[i])) { BundleImportData data = BundleDataControl.Instance.GetPathImportData(deps[i]); if (assetImportData == null || data == null || assetImportData.Index < data.Index || data.SkipData) { ret += EditorTool.CalculateTextureSizeBytes(deps[i]); } } } ret += 512; break; case BundleType.FBX: case BundleType.Controller: case BundleType.Animation: assets = AssetDatabase.LoadAllAssetsAtPath(assetPath); List <UnityEngine.Object> list = AssetFilter.FilterObjectByType(assets, type, assetPath); for (int i = 0; i < list.Count; ++i) { ret += EditorTool.GetRuntimeMemorySize(list[i]); } break; default: FileInfo fileInfo = new FileInfo(assetPath); ret = fileInfo.Length; break; } for (int i = 0; assets != null && i < assets.Length; ++i) { if ((!(assets[i] is GameObject)) && (!(assets[i] is Component))) { Resources.UnloadAsset(assets[i]); } } m_pathFileSize.Add(assetPath, ret); return(ret); }