Esempio n. 1
0
        void LoadFilterOption()
        {
            try
            {
                FileStream fileStream = new FileStream(savePath + saveFileName, FileMode.Open);
                if (fileStream == null)
                {
                    return;
                }

                using (fileStream)
                {
                    if (fileStream.Position < fileStream.Length)
                    {
                        byte[] _LoadByte = new byte[8];
                        for (int i = 0; i < _LoadByte.Length; ++i)
                        {
                            _LoadByte[i] = (byte)fileStream.ReadByte();
                        }
                        maxTextureSize = BitConverter.ToInt64(_LoadByte, 0);
                    }

                    if (fileStream.Position < fileStream.Length)
                    {
                        byte[] _LoadByte = new byte[4];
                        for (int i = 0; i < _LoadByte.Length; ++i)
                        {
                            _LoadByte[i] = (byte)fileStream.ReadByte();
                        }
                        _AndroidFilterFormat = (AndroidFormat)BitConverter.ToInt32(_LoadByte, 0);
                    }

                    if (fileStream.Position < fileStream.Length)
                    {
                        byte[] _LoadByte = new byte[4];
                        for (int i = 0; i < _LoadByte.Length; ++i)
                        {
                            _LoadByte[i] = (byte)fileStream.ReadByte();
                        }
                        _IOSFilterFormat = (IOSFormat)BitConverter.ToInt32(_LoadByte, 0);
                    }

                    if (fileStream.Position < fileStream.Length)
                    {
                        byte[] _LoadByte = new byte[8];
                        for (int i = 0; i < _LoadByte.Length; ++i)
                        {
                            _LoadByte[i] = (byte)fileStream.ReadByte();
                        }
                        minTextureSize = BitConverter.ToInt64(_LoadByte, 0);
                    }
                }

                fileStream.Close();
            }
            catch { }
        }
        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();
        }
Esempio n. 3
0
        void DrawFilters()
        {
            EditorGUILayout.BeginHorizontal();
            {
                EditorGUILayout.BeginVertical("box", GUILayout.Width(310));
                {
                    EditorGUILayout.BeginHorizontal();
                    {
                        if (isNotSquare)
                        {
                            GUI.backgroundColor = Color.green;
                        }
                        if (GUILayout.Button("정사각형이 아닌 텍스쳐"))
                        {
                            isNotSquare = !isNotSquare;
                        }
                        GUI.backgroundColor = Color.white;
                    }
                    EditorGUILayout.EndHorizontal();

                    EditorGUILayout.BeginHorizontal();
                    {
                        if (isNotPower2)
                        {
                            GUI.backgroundColor = Color.green;
                        }
                        if (GUILayout.Button("2의 거듭제곱이 아닌 텍스쳐"))
                        {
                            isNotPower2 = !isNotPower2;
                        }
                        GUI.backgroundColor = Color.white;
                    }
                    EditorGUILayout.EndHorizontal();

                    EditorGUILayout.BeginHorizontal();
                    {
                        if (enableMipmap)
                        {
                            GUI.backgroundColor = Color.green;
                        }
                        if (GUILayout.Button("밉맵 가능한 텍스쳐"))
                        {
                            enableMipmap = !enableMipmap;
                        }
                        GUI.backgroundColor = Color.white;
                    }
                    EditorGUILayout.EndHorizontal();
                }
                EditorGUILayout.EndVertical();

                EditorGUILayout.BeginVertical("box", GUILayout.Width(310));
                {
                    EditorGUILayout.BeginHorizontal();
                    {
                        if (checkTextureSize)
                        {
                            GUI.backgroundColor = Color.green;
                        }
                        if (GUILayout.Button("Texture Size", GUILayout.Width(110)))
                        {
                            checkTextureSize = !checkTextureSize;
                        }
                        GUI.backgroundColor = Color.white;

                        //if (minTextureSize > maxTextureSize)
                        //    minTextureSize = maxTextureSize;
                        minTextureSize = EditorGUILayout.LongField(minTextureSize, GUILayout.Width(80));

                        EditorGUILayout.LabelField("  ~  ", GUILayout.Width(40));

                        if (minTextureSize > maxTextureSize)
                        {
                            maxTextureSize = minTextureSize;
                        }
                        maxTextureSize = EditorGUILayout.LongField(maxTextureSize, GUILayout.Width(80));
                    }
                    EditorGUILayout.EndHorizontal();

                    EditorGUILayout.BeginHorizontal();
                    {
                        if (isNotForAndroid)
                        {
                            GUI.backgroundColor = Color.green;
                        }
                        if (GUILayout.Button("Android 체크 안된 텍스쳐"))
                        {
                            isNotForAndroid = !isNotForAndroid;
                        }
                        GUI.backgroundColor = Color.white;
                    }
                    EditorGUILayout.EndHorizontal();

                    EditorGUILayout.BeginHorizontal();
                    {
                        if (isNotForIOS)
                        {
                            GUI.backgroundColor = Color.green;
                        }
                        if (GUILayout.Button("iOS 체크 안된 텍스쳐"))
                        {
                            isNotForIOS = !isNotForIOS;
                        }
                        GUI.backgroundColor = Color.white;
                    }
                    EditorGUILayout.EndHorizontal();

                    EditorGUILayout.BeginHorizontal();
                    {
                        if (isCheckTrensparency)
                        {
                            GUI.backgroundColor = Color.green;
                        }
                        if (GUILayout.Button("Alpha is Trensperency 체크된 텍스쳐"))
                        {
                            isCheckTrensparency = !isCheckTrensparency;
                        }
                        GUI.backgroundColor = Color.white;
                    }
                    EditorGUILayout.EndHorizontal();
                }
                EditorGUILayout.EndVertical();

                //Format Filter
                EditorGUILayout.BeginVertical("box", GUILayout.Width(310));
                {
                    EditorGUILayout.BeginHorizontal();
                    {
                        if (isNotCheckReadWrite)
                        {
                            GUI.backgroundColor = Color.green;
                        }
                        if (GUILayout.Button("Read/Write 체크 된 텍스쳐"))
                        {
                            isNotCheckReadWrite = !isNotCheckReadWrite;
                        }
                        GUI.backgroundColor = Color.white;
                    }
                    EditorGUILayout.EndHorizontal();

                    EditorGUILayout.BeginHorizontal();
                    {
                        if (isChecksRGB)
                        {
                            GUI.backgroundColor = Color.green;
                        }
                        if (GUILayout.Button("sRGB(ColorTexture) 체크 안된 텍스쳐"))
                        {
                            isChecksRGB = !isChecksRGB;
                        }
                        GUI.backgroundColor = Color.white;
                    }
                    EditorGUILayout.EndHorizontal();
#if UNITY_IOS
                    EditorGUILayout.BeginHorizontal();
                    {
                        if (isCheckAndroidFormat)
                        {
                            GUI.backgroundColor = Color.green;
                        }
                        if (GUILayout.Button("Check IOS Format", GUILayout.Width(320)))
                        {
                            isCheckIOSFormat = !isCheckIOSFormat;
                        }
                        GUI.backgroundColor = Color.white;
                    }
                    EditorGUILayout.EndHorizontal();

                    EditorGUILayout.BeginHorizontal();
                    {
                        _IOSFilterFormat = (IOSFormat)EditorGUILayout.EnumFlagsField("IOS Skip Format", _IOSFilterFormat, GUILayout.Width(310));
                    }
                    EditorGUILayout.EndHorizontal();
#endif

#if UNITY_ANDROID
                    EditorGUILayout.BeginHorizontal();
                    {
                        if (isCheckAndroidFormat)
                        {
                            GUI.backgroundColor = Color.green;
                        }
                        if (GUILayout.Button("Check Android Format"))
                        {
                            isCheckAndroidFormat = !isCheckAndroidFormat;
                        }
                        GUI.backgroundColor = Color.white;
                    }
                    EditorGUILayout.EndHorizontal();

                    EditorGUILayout.BeginHorizontal();
                    {
                        _AndroidFilterFormat = (AndroidFormat)EditorGUILayout.EnumFlagsField("Android Skip Format", _AndroidFilterFormat);
                    }
                    EditorGUILayout.EndHorizontal();
#endif
                }
                EditorGUILayout.EndVertical();
            }
            EditorGUILayout.EndHorizontal();
        }
        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();
                }
            }
        }