static void CheckAlphaBySelect() { foreach (string file in EditorResourcePaths.GetTextureFiles(EditorResourcePaths.GetFileSelections())) { Texture2D texture = EditorCommonUtils.ReadTexture(file); if (ContainAlpha(texture)) { DebugUtil.LogWarning("该图片包含透明通道: " + file); } } }
public static void CheckETC2() { foreach (string file in EditorResourcePaths.GetSpriteFiles()) { Texture2D texture = EditorCommonUtils.ReadTexture(file); if (texture.width % 4 != 0 || texture.height % 4 != 0) { DebugUtil.LogWarning("该图片不满足Android的压缩格式 : " + file); } } DebugUtil.Log("CheckETC2 Done!"); }
public static void FilterTextureAlpha(string path) { Texture2D texture = EditorCommonUtils.ReadTexture(path); for (int i = 0; i < texture.width; i++) { for (int j = 0; j < texture.height; j++) { Color color = texture.GetPixel(i, j); color.a = 1; texture.SetPixel(i, j, color); } } EditorCommonUtils.WriteBytes(path, texture.EncodeToPNG()); }
static void SetTextureImporterFormat(TextureImporter importer) { Texture2D texture = EditorCommonUtils.ReadTexture(importer.assetPath); if (ContainAlpha(texture)) { SetPlatformTextureImporterSettings(importer, "Default", TextureImporterFormat.RGBA32); SetPlatformTextureImporterSettings(importer, "Standalone", TextureImporterFormat.DXT5); SetPlatformTextureImporterSettings(importer, "Android", TextureImporterFormat.ETC2_RGBA8); SetPlatformTextureImporterSettings(importer, "iPhone", IOS_NEW_RGBA); } else { SetPlatformTextureImporterSettings(importer, "Default", TextureImporterFormat.RGB24); SetPlatformTextureImporterSettings(importer, "Standalone", TextureImporterFormat.DXT1); SetPlatformTextureImporterSettings(importer, "Android", TextureImporterFormat.ETC2_RGB4); bool pvrtc; if (importer.npotScale == TextureImporterNPOTScale.None) { pvrtc = texture.width == texture.height && EditorCommonUtils.IsPOT(texture.width, 2) && EditorCommonUtils.IsPOT(texture.height, 2); } else { Texture2D temp = AssetDatabase.LoadAssetAtPath <Texture2D>(importer.assetPath); pvrtc = temp.width == temp.height; } if (pvrtc) { SetPlatformTextureImporterSettings(importer, "iPhone", TextureImporterFormat.PVRTC_RGB4); } else { SetPlatformTextureImporterSettings(importer, "iPhone", IOS_NEW_RGB); } } }
static void HandleSpriteAtlasFormat(HashSet <string> atlasFiles) { string[] atlasFileArray = new string[ATLAS_TYPE_NUMBER]; SpriteAtlas[] spriteAtlasArray = new SpriteAtlas[ATLAS_TYPE_NUMBER]; SpriteAtlasPackingSettings[] packingSettingsArray = new SpriteAtlasPackingSettings[ATLAS_TYPE_NUMBER]; SpriteAtlasTextureSettings[] textureSettingsArray = new SpriteAtlasTextureSettings[ATLAS_TYPE_NUMBER]; Dictionary <string, TextureImporterPlatformSettings>[] platformSettingsDictArray = new Dictionary <string, TextureImporterPlatformSettings> [ATLAS_TYPE_NUMBER]; platformSettingsDictArray[0] = new Dictionary <string, TextureImporterPlatformSettings>(); platformSettingsDictArray[1] = new Dictionary <string, TextureImporterPlatformSettings>(); foreach (string file in atlasFiles) { if (file.EndsWith(LOW_ATLAS_SUFFIX)) { continue; } atlasFileArray[0] = file; atlasFileArray[1] = file.Replace(EditorResourcePaths.ATLAS_SUFFIX, LOW_ATLAS_SUFFIX); for (int i = 0; i < ATLAS_TYPE_NUMBER; i++) { spriteAtlasArray[i] = AssetDatabase.LoadAssetAtPath <SpriteAtlas>(atlasFileArray[i]); packingSettingsArray[i] = SpriteAtlasExtensions.GetPackingSettings(spriteAtlasArray[i]); textureSettingsArray[i] = SpriteAtlasExtensions.GetTextureSettings(spriteAtlasArray[i]); foreach (string platform in PLATFORMS) { platformSettingsDictArray[i][platform] = SpriteAtlasExtensions.GetPlatformSettings(spriteAtlasArray[i], platform); } } HashSet <string> spriteSet = EditorResourcePaths.GetDependencies(atlasFileArray, EditorResourcePaths.PNG_REGEX); bool containAlpha = false; foreach (string spriteFile in spriteSet) { Texture2D texture = EditorCommonUtils.ReadTexture(spriteFile); if (ContainAlpha(texture)) { containAlpha = true; break; } } for (int i = 0; i < ATLAS_TYPE_NUMBER; i++) { packingSettingsArray[i].enableRotation = false; packingSettingsArray[i].enableTightPacking = false; SetDefaultTextureSettings(ref textureSettingsArray[i]); } if (containAlpha) { SetPlatformTextureSettings(platformSettingsDictArray[0]["Default"], "Default", TextureImporterFormat.RGBA32); SetPlatformTextureSettings(platformSettingsDictArray[0]["Standalone"], "Standalone", TextureImporterFormat.DXT5); SetPlatformTextureSettings(platformSettingsDictArray[0]["Android"], "Android", TextureImporterFormat.ETC2_RGBA8); SetPlatformTextureSettings(platformSettingsDictArray[0]["iPhone"], "iPhone", IOS_NEW_RGBA); SetPlatformTextureSettings(platformSettingsDictArray[1]["Default"], "Default", TextureImporterFormat.RGBA32); SetPlatformTextureSettings(platformSettingsDictArray[1]["Standalone"], "Standalone", TextureImporterFormat.DXT5Crunched); SetPlatformTextureSettings(platformSettingsDictArray[1]["Android"], "Android", TextureImporterFormat.ETC2_RGBA8Crunched); SetPlatformTextureSettings(platformSettingsDictArray[1]["iPhone"], "iPhone", TextureImporterFormat.PVRTC_RGBA4); } else { SetPlatformTextureSettings(platformSettingsDictArray[0]["Default"], "Default", TextureImporterFormat.RGB24); SetPlatformTextureSettings(platformSettingsDictArray[0]["Standalone"], "Standalone", TextureImporterFormat.DXT1); SetPlatformTextureSettings(platformSettingsDictArray[0]["Android"], "Android", TextureImporterFormat.ETC2_RGB4); SetPlatformTextureSettings(platformSettingsDictArray[0]["iPhone"], "iPhone", TextureImporterFormat.PVRTC_RGB4); SetPlatformTextureSettings(platformSettingsDictArray[1]["Default"], "Default", TextureImporterFormat.RGB24); SetPlatformTextureSettings(platformSettingsDictArray[1]["Standalone"], "Standalone", TextureImporterFormat.DXT1Crunched); SetPlatformTextureSettings(platformSettingsDictArray[1]["Android"], "Android", TextureImporterFormat.ETC_RGB4Crunched); SetPlatformTextureSettings(platformSettingsDictArray[1]["iPhone"], "iPhone", TextureImporterFormat.PVRTC_RGB4); } for (int i = 0; i < ATLAS_TYPE_NUMBER; i++) { SpriteAtlasExtensions.SetIncludeInBuild(spriteAtlasArray[i], false); SpriteAtlasExtensions.SetPackingSettings(spriteAtlasArray[i], packingSettingsArray[i]); SpriteAtlasExtensions.SetTextureSettings(spriteAtlasArray[i], textureSettingsArray[i]); foreach (string platform in PLATFORMS) { SpriteAtlasExtensions.SetPlatformSettings(spriteAtlasArray[i], platformSettingsDictArray[i][platform]); } } SpriteAtlasExtensions.SetIsVariant(spriteAtlasArray[1], false); SpriteAtlasExtensions.Remove(spriteAtlasArray[1], SpriteAtlasExtensions.GetPackables(spriteAtlasArray[1])); SpriteAtlasExtensions.Add(spriteAtlasArray[1], SpriteAtlasExtensions.GetPackables(spriteAtlasArray[0])); } AssetDatabase.Refresh(); }