コード例 #1
0
        void DrawMultiOpContent()
        {
            GUILayout.BeginVertical();
            GUILayout.BeginHorizontal();
            GUILayout.BeginVertical();
            GUILayout.BeginHorizontal();
            bMipMap = GUILayout.Toggle(bMipMap, "MipMap", GUILayout.Width(80));
            bRw     = GUILayout.Toggle(bRw, "R/W Enabled", GUILayout.Width(100));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("ANDROID:", GUILayout.Width(70));
            antFmt = (AndroidFormat)EditorGUILayout.EnumPopup(antFmt, GUILayout.Width(90));
            antQua = (CompressQuality)EditorGUILayout.EnumPopup(antQua, GUILayout.Width(90));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("IOS:", GUILayout.Width(70));
            iosFmt = (IosFormat)EditorGUILayout.EnumPopup(iosFmt, GUILayout.Width(90));
            iosQua = (CompressQuality)EditorGUILayout.EnumPopup(iosQua, GUILayout.Width(90));
            GUILayout.EndHorizontal();

            GUILayout.EndVertical();
            if (GUILayout.Button("全选", GUILayout.Width(200), GUILayout.Height(50)))
            {
                foreach (var item in _config)
                {
                    item.bModify = true;
                }
            }
            if (GUILayout.Button("批量转换选择纹理", GUILayout.Width(200), GUILayout.Height(50)))
            {
                if ((int)antFmt == 0 | (int)antQua == 0 | (int)iosFmt == 0 | (int)iosQua == 0)
                {
                    EditorUtility.DisplayDialog("警告", "没有设置批量转换的目标格式", "OK");
                }
                else
                {
                    foreach (var item in _config)
                    {
                        if (item.bModify && item.texture != null)
                        {
                            item.mipmap                     = bMipMap;
                            item.rw                         = bRw;
                            item.android.format             = (TextureImporterFormat)antFmt;
                            item.android.compressionQuality = (int)antQua;
                            item.ios.format                 = (TextureImporterFormat)iosFmt;
                            item.ios.compressionQuality     = (int)iosQua;
                        }
                    }
                    DoConvert();
                }
            }
            GUILayout.EndHorizontal();
            GUILayout.EndVertical();
        }
コード例 #2
0
        private void DoConvert()
        {
            int convertCount = 0;

            foreach (var item in _config)
            {
                if (item.bModify && item.texture != null)
                {
                    convertCount++;
                }
            }
            int ok = 0;

            for (int i = 0; i < _config.Count; i++)
            {
                TexData td = _config[i];
                if (td.bModify && td.texture != null)
                {
                    EditorUtility.DisplayProgressBar("纹理转换", td.ti.assetPath, ok++ / (float)convertCount);
                    td.bModify          = false;
                    td.color            = Color.gray;
                    td.ti.mipmapEnabled = td.mipmap;
                    td.ti.isReadable    = td.rw;
                    AndroidFormat androidFmt = (AndroidFormat)td.android.format;
                    IosFormat     iosFmt     = (IosFormat)td.ios.format;
                    //智能格式转换 - Normal不要alpha unity说没alpha 就不设置alpha
                    if (td.ti.textureType == TextureImporterType.NormalMap | !TextureHasAlpha(td.ti))
                    {
                        if (androidFmt == AndroidFormat.RGBA32)
                        {
                            androidFmt = AndroidFormat.RGB24;
                        }
                        else if (androidFmt == AndroidFormat.RGBA16)
                        {
                            androidFmt = AndroidFormat.RGB16;
                        }
                        else if (androidFmt == AndroidFormat.ETC2_RGBA8)
                        {
                            androidFmt = AndroidFormat.ETC2_RGB4;
                        }
                        if (iosFmt == IosFormat.RGBA32)
                        {
                            iosFmt = IosFormat.RGB24;
                        }
                        else if (iosFmt == IosFormat.RGBA16)
                        {
                            iosFmt = IosFormat.RGB16;
                        }
                        else if (iosFmt == IosFormat.PVRTC_RGBA4)
                        {
                            iosFmt = IosFormat.PVRTC_RGB4;
                        }
                        else if (iosFmt == IosFormat.ASTC_RGBA_4x4)
                        {
                            iosFmt = IosFormat.ASTC_RGB_4x4;
                        }
                        else if (iosFmt == IosFormat.ASTC_RGBA_6x6)
                        {
                            iosFmt = IosFormat.ASTC_RGB_6x6;
                        }
                    }
                    if (bModifyAndroid)
                    {
                        td.ti.SetPlatformTextureSettings("Android", td.android.maxTextureSize, (TextureImporterFormat)androidFmt, td.android.compressionQuality, false);
                    }
                    if (bModifyIOS)
                    {
                        td.ti.SetPlatformTextureSettings("iPhone", td.ios.maxTextureSize, (TextureImporterFormat)iosFmt, td.ios.compressionQuality, false);
                    }
                    AssetDatabase.ImportAsset(td.ti.assetPath);
                    EditorUtility.ClearProgressBar();
                }
            }
        }