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,49 @@
#if UNITY_EDITOR
using System;
using System.IO;
using HotUpdate.UI;
using UnityEditor;
using UnityEngine;
using UnityEngine.U2D;
using YooAsset.Editor;
namespace AIGame.EditorTools
{
[DisplayName("UI 图片与所属图集同包")]
public sealed class PackUiAtlas : IBundlePackRule
{
public BundlePackRuleResult GetPackRuleResult(BundlePackRuleData data)
{
string path = data.AssetPath.Replace('\\', '/');
if (UiAtlasPaths.IsTexturePath(path)) path = UiAtlasPaths.GetAtlasPathForTexture(path);
else if (!path.StartsWith(UiAtlasPaths.AtlasRoot + "/", StringComparison.Ordinal)
|| !path.EndsWith(".spriteatlas", StringComparison.Ordinal))
throw new ArgumentException("Not a UI atlas input: " + path);
return new BundlePackRuleResult(Path.ChangeExtension(path, null), DefaultBundlePackRule.AssetBundleFileExtension);
}
}
[DisplayName("自动生成的 UI 图集")]
public sealed class CollectUiAtlas : IAssetFilterRule
{
public string FindAssetType => "SpriteAtlas";
public bool IsCollectAsset(AssetFilterRuleData data)
{
var atlas = AssetDatabase.LoadAssetAtPath<SpriteAtlas>(data.AssetPath);
return atlas != null && Array.IndexOf(AssetDatabase.GetLabels(atlas), UiSpriteAtlasGenerator.GeneratedLabel) >= 0;
}
}
[DisplayName("UI 图集原图")]
public sealed class CollectUiAtlasTexture : IAssetFilterRule
{
public string FindAssetType => "Texture2D";
public bool IsCollectAsset(AssetFilterRuleData data)
{
return UiAtlasPaths.IsTexturePath(data.AssetPath)
&& AssetDatabase.LoadAssetAtPath<SpriteAtlas>(UiAtlasPaths.GetAtlasPathForTexture(data.AssetPath)) != null
&& (AssetImporter.GetAtPath(data.AssetPath) as TextureImporter)?.textureType == TextureImporterType.Sprite;
}
}
}
#endif