void OnGUI() { TitleHorizontalUI(); GUILayout.BeginVertical(); var iter = dirList.GetEnumerator(); while (iter.MoveNext()) { dir = iter.Current; bundleInfo = dirInfoDic[dir]; bundleInfo.isValid = EditorGUILayout.BeginToggleGroup("IsValid", bundleInfo.isValid); GUILayout.BeginHorizontal(); GUILayout.Label(dir.Name, EditorStyles.boldLabel, new[] { GUILayout.MinWidth(170) }); bundleInfo.format = (TextureImporterFormat)EditorGUILayout.EnumPopup(bundleInfo.format); bundleInfo.compressionQuality = (TextureCompressionQuality)EditorGUILayout.EnumPopup(bundleInfo.compressionQuality); GUILayout.EndHorizontal(); EditorGUILayout.EndToggleGroup(); } bundleInfo = null; dir = null; iter.Dispose(); GUILayout.EndVertical(); if (GUILayout.Button("确定")) { if (EditorUtility.DisplayDialog("BundleAtlas优化", "是否确认修改图集设置", "确认", "取消")) { Execute(); } } }
void Execute() { Debug.Log("开始"); var iter = dirInfoDic.GetEnumerator(); bool isSpineTexture = false; FileSystemInfo fileInfo; while (iter.MoveNext()) { dir = iter.Current.Key; bundleInfo = iter.Current.Value; if (!fileDir.ContainsKey(dir) || !bundleInfo.isValid) { continue; } files = fileDir[dir]; for (int i = 0; i < files.Length; i++) { fileInfo = files[i]; if (fileInfo is DirectoryInfo || !fileInfo.Name.EndsWith(".png")) { continue; } int index = fileInfo.FullName.IndexOf("Assets"); if (index == -1) { continue; } isSpineTexture = spineSkeletonData.ContainsKey(GetNameByShort(fileInfo)); path = fileInfo.FullName.Substring(index); //texture = AssetDatabase.LoadAssetAtPath<Texture2D>(path); //path = AssetDatabase.GetAssetPath(texture); TextureImporter import = AssetImporter.GetAtPath(path) as TextureImporter; if (import == null) { continue; } import.textureType = bundleInfo.defaultType; import.textureShape = TextureImporterShape.Texture2D; import.mipmapEnabled = bundleInfo.mipmapEnabled; import.ignorePngGamma = bundleInfo.ignorePngGamma; import.isReadable = bundleInfo.isReadable; import.alphaIsTransparency = isSpineTexture ? false : bundleInfo.alphaIsTransparency; import.sRGBTexture = bundleInfo.sRGBTexture; import.spritePixelsPerUnit = bundleInfo.spritePixelsPerUnit; import.maxTextureSize = bundleInfo.maxTextureSize; import.compressionQuality = (int)bundleInfo.compressionQuality; //NONPOWER2的贴图如果强制被拉伸成了POWER2,会产生黑边 import.npotScale = TextureImporterNPOTScale.None; //透明度直接使用Texture自己的信息 import.alphaSource = TextureImporterAlphaSource.FromInput; import.SetPlatformTextureSettings(bundleInfo.GetPlatformSettings()); import.SaveAndReimport(); //AssetDatabase.ImportAsset(path); } } iter.Dispose(); files = null; dir = null; path = null; bundleInfo = null; Debug.Log("结束"); Close(); }