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(); }
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(); } } }