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:
udx
2026-10-24 18:04:41 +08:00
co-authored by Cursor
parent 6ebc9401ce
commit 45e62132c8
1432 changed files with 2971856 additions and 2798 deletions
@@ -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