Files
JJBB/Assets/Project/Script/Common/Utilities/Editor/RemoveNormalCompress.cs
2024-08-23 15:49:34 +08:00

76 lines
2.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Collections.Generic;
using Module.Log;
using UnityEditor;
using UnityEngine;
public class RemoveNormalCompress
{
private readonly List<TextureImporter> _textureImporters;
private int _index;
private RemoveNormalCompress()
{
_textureImporters = new List<TextureImporter>();
var allPaths = EditorCommonUtility.GetAllAssetPathsFromSelect();
for (var i = 0; i < allPaths.Count; i++)
{
var path = allPaths[i];
var importer = AssetImporter.GetAtPath(path) as TextureImporter;
if (importer != null &&
importer.normalmap &&
(importer.mipmapEnabled ||
importer.compressionQuality < 100 ||
importer.textureFormat != TextureImporterFormat.ARGB32))
_textureImporters.Add(importer);
}
}
// 丢失动画的状态,会试图修复状态;动画名称不对应动画状态,会试图修改动画名称;
[MenuItem("Assets/Normal/移除法线压缩")]
public static void RemovAnimatoreTransitions()
{
var animatorFix = new RemoveNormalCompress();
animatorFix.Start();
}
private void Start()
{
if (_textureImporters.Count > 0)
EditorApplication.update = Update;
}
private void Stop()
{
EditorUtility.ClearProgressBar();
EditorApplication.update = null;
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
EditorUtility.UnloadUnusedAssetsImmediate(true);
}
private void Update()
{
// 每一帧处理一个State使移动后的路径能够正常赋值
if (_index > _textureImporters.Count - 1)
{
LogModule.WarningLog("******** 法线压缩全部解除 ********");
Stop();
}
else
{
var importer = _textureImporters[_index];
_index++;
var cancel = EditorUtility.DisplayCancelableProgressBar("去除法线压缩", importer.assetPath,
_index / (float) _textureImporters.Count);
if (cancel)
Stop();
else
{
importer.mipmapEnabled = false;
importer.compressionQuality = 100;
importer.textureFormat = TextureImporterFormat.ARGB32;
importer.SaveAndReimport();
}
}
}
}