Ship the WeChat hot-update catalogs and the camp, TideWhale T2, UI atlas, and animation-lab work.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
#if UNITY_EDITOR
|
||||
using System;
|
||||
using HotUpdate.UI;
|
||||
using UnityEditor;
|
||||
|
||||
namespace AIGame.EditorTools
|
||||
{
|
||||
/// <summary>UI 图集原图保持未压缩,其他图片按平台设置压缩格式。</summary>
|
||||
public sealed class TexturePlatformPostprocessor : AssetPostprocessor
|
||||
{
|
||||
private void OnPreprocessTexture()
|
||||
{
|
||||
// 只处理项目图片,不覆盖 Packages 中的包资源。
|
||||
if (!assetPath.StartsWith("Assets/", StringComparison.OrdinalIgnoreCase))
|
||||
return;
|
||||
|
||||
var importer = (TextureImporter)assetImporter;
|
||||
if (UiAtlasPaths.IsTexturePath(assetPath))
|
||||
{
|
||||
ConfigureUiAtlasSource(importer);
|
||||
return;
|
||||
}
|
||||
// Unity 的 Windows 纹理设置使用 Standalone 平台组。
|
||||
SetPlatformFormat(importer, "Standalone", TextureImporterFormat.DXT5);
|
||||
SetPlatformFormat(importer, "iPhone", TextureImporterFormat.ASTC_6x6);
|
||||
SetPlatformFormat(importer, "Android", TextureImporterFormat.ASTC_6x6);
|
||||
SetPlatformFormat(importer, "WebGL", TextureImporterFormat.ASTC_8x8);
|
||||
}
|
||||
|
||||
public static bool ConfigureUiAtlasSource(TextureImporter importer)
|
||||
{
|
||||
if (!UiAtlasPaths.IsTexturePath(importer.assetPath)) return false;
|
||||
// 源图使用无损 RGBA32,平台覆盖关闭;最终压缩由 SpriteAtlas 自己处理。
|
||||
bool changed = SetUncompressedSource(importer, "DefaultTexturePlatform");
|
||||
changed |= SetUncompressedSource(importer, "Standalone");
|
||||
changed |= SetUncompressedSource(importer, "iPhone");
|
||||
changed |= SetUncompressedSource(importer, "Android");
|
||||
changed |= SetUncompressedSource(importer, "WebGL");
|
||||
return changed;
|
||||
}
|
||||
|
||||
private static bool SetUncompressedSource(TextureImporter importer, string platform)
|
||||
{
|
||||
var settings = importer.GetPlatformTextureSettings(platform);
|
||||
if (!settings.overridden && settings.format == TextureImporterFormat.RGBA32
|
||||
&& settings.textureCompression == TextureImporterCompression.Uncompressed
|
||||
&& !settings.crunchedCompression) return false;
|
||||
settings.name = platform;
|
||||
settings.overridden = false;
|
||||
settings.format = TextureImporterFormat.RGBA32;
|
||||
settings.textureCompression = TextureImporterCompression.Uncompressed;
|
||||
settings.crunchedCompression = false;
|
||||
importer.SetPlatformTextureSettings(settings);
|
||||
return true;
|
||||
}
|
||||
|
||||
private static void SetPlatformFormat(
|
||||
TextureImporter importer, string platform, TextureImporterFormat format)
|
||||
{
|
||||
// 保留尺寸、缩放算法等原有设置,仅覆盖压缩相关选项。
|
||||
var settings = importer.GetPlatformTextureSettings(platform);
|
||||
settings.name = platform;
|
||||
settings.overridden = true;
|
||||
settings.format = format;
|
||||
settings.crunchedCompression = false;
|
||||
importer.SetPlatformTextureSettings(settings);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user