コード例 #1
0
 static void CheckAlphaBySelect()
 {
     foreach (string file in EditorResourcePaths.GetTextureFiles(EditorResourcePaths.GetFileSelections()))
     {
         Texture2D texture = EditorCommonUtils.ReadTexture(file);
         if (ContainAlpha(texture))
         {
             DebugUtil.LogWarning("该图片包含透明通道: " + file);
         }
     }
 }
コード例 #2
0
 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!");
 }
コード例 #3
0
        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());
        }
コード例 #4
0
        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);
                }
            }
        }
コード例 #5
0
        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();
        }