diff --git a/UnityProject/Assets/AssetArt/Atlas/UIRaw_Atlas_Common.spriteatlasv2 b/UnityProject/Assets/AssetArt/Atlas/UIRaw_Atlas_Common.spriteatlas
similarity index 54%
rename from UnityProject/Assets/AssetArt/Atlas/UIRaw_Atlas_Common.spriteatlasv2
rename to UnityProject/Assets/AssetArt/Atlas/UIRaw_Atlas_Common.spriteatlas
index c57c1a08..74fa3b91 100644
--- a/UnityProject/Assets/AssetArt/Atlas/UIRaw_Atlas_Common.spriteatlasv2
+++ b/UnityProject/Assets/AssetArt/Atlas/UIRaw_Atlas_Common.spriteatlas
@@ -1,14 +1,13 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
---- !u!612988286 &4096168566840163508
-SpriteAtlasAsset:
+--- !u!687078895 &4343727234628468602
+SpriteAtlas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: UIRaw_Atlas_Common
- m_MasterAtlas: {fileID: 0}
- m_ImporterData:
+ m_EditorData:
serializedVersion: 2
textureSettings:
serializedVersion: 2
@@ -34,6 +33,30 @@ SpriteAtlasAsset:
m_Overridden: 1
m_AndroidETC2FallbackOverride: 0
m_ForceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ m_BuildTarget: Android
+ m_MaxTextureSize: 2048
+ m_ResizeAlgorithm: 0
+ m_TextureFormat: 50
+ m_TextureCompression: 1
+ m_CompressionQuality: 100
+ m_CrunchedCompression: 0
+ m_AllowsAlphaSplitting: 0
+ m_Overridden: 1
+ m_AndroidETC2FallbackOverride: 0
+ m_ForceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ m_BuildTarget: WebGL
+ m_MaxTextureSize: 2048
+ m_ResizeAlgorithm: 0
+ m_TextureFormat: 50
+ m_TextureCompression: 1
+ m_CompressionQuality: 50
+ m_CrunchedCompression: 0
+ m_AllowsAlphaSplitting: 0
+ m_Overridden: 1
+ m_AndroidETC2FallbackOverride: 0
+ m_ForceMaximumCompressionQuality_BC6H_BC7: 0
packingSettings:
serializedVersion: 2
padding: 2
@@ -50,6 +73,19 @@ SpriteAtlasAsset:
- {fileID: 21300000, guid: d623a2b7e069a4c4592d3da48f476189, type: 3}
- {fileID: 21300000, guid: 57e4117f4cd6ae54284898652e70d553, type: 3}
bindAsDefault: 1
- isAtlasV2: 1
+ isAtlasV2: 0
cachedData: {fileID: 0}
+ m_MasterAtlas: {fileID: 0}
+ m_PackedSprites:
+ - {fileID: 21300000, guid: 2761fc23b4aa7e34187ac5ffbc3fad9b, type: 3}
+ - {fileID: 21300000, guid: f9a06e163014f4f46b14f4499d3e7240, type: 3}
+ - {fileID: 21300000, guid: d623a2b7e069a4c4592d3da48f476189, type: 3}
+ - {fileID: 21300000, guid: 57e4117f4cd6ae54284898652e70d553, type: 3}
+ m_PackedSpriteNamesToIndex:
+ - red_button
+ - blue_button
+ - white_background
+ - white_button
+ m_RenderDataMap: {}
+ m_Tag: UIRaw_Atlas_Common
m_IsVariant: 0
diff --git a/UnityProject/Assets/AssetArt/Atlas/UIRaw_Atlas_Common.spriteatlas.meta b/UnityProject/Assets/AssetArt/Atlas/UIRaw_Atlas_Common.spriteatlas.meta
new file mode 100644
index 00000000..e3de747d
--- /dev/null
+++ b/UnityProject/Assets/AssetArt/Atlas/UIRaw_Atlas_Common.spriteatlas.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c91b064c2cd7a34448ae0d6d7ee58e7f
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 4343727234628468602
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityProject/Assets/AssetArt/Atlas/UIRaw_Atlas_Common.spriteatlasv2.meta b/UnityProject/Assets/AssetArt/Atlas/UIRaw_Atlas_Common.spriteatlasv2.meta
deleted file mode 100644
index b02baad3..00000000
--- a/UnityProject/Assets/AssetArt/Atlas/UIRaw_Atlas_Common.spriteatlasv2.meta
+++ /dev/null
@@ -1,7 +0,0 @@
-fileFormatVersion: 2
-guid: b9eaf6bdacd0683468b1dd697e3d2bce
-SpriteAtlasImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/UnityProject/Assets/TEngine/Editor/Postprocessor/SpritePostprocessor.cs b/UnityProject/Assets/TEngine/Editor/Postprocessor/SpritePostprocessor.cs
index 6a425088..17526c43 100644
--- a/UnityProject/Assets/TEngine/Editor/Postprocessor/SpritePostprocessor.cs
+++ b/UnityProject/Assets/TEngine/Editor/Postprocessor/SpritePostprocessor.cs
@@ -7,521 +7,542 @@ using UnityEngine;
using UnityEngine.U2D;
using Object = UnityEngine.Object;
-///
-/// 图集导入管线。
-///
-public class SpritePostprocessor : AssetPostprocessor
+namespace GameFramework.Editor
{
- static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths)
- {
- foreach (var s in importedAssets)
- {
- EditorSpriteSaveInfo.OnImportSprite(s);
- }
-
- foreach (var s in deletedAssets)
- {
- EditorSpriteSaveInfo.OnDeleteSprite(s);
- }
-
- foreach (var s in movedFromAssetPaths)
- {
- EditorSpriteSaveInfo.OnDeleteSprite(s);
- }
-
- foreach (var s in movedAssets)
- {
- EditorSpriteSaveInfo.OnImportSprite(s);
- }
- }
-}
-
-public static class EditorSpriteSaveInfo
-{
- private const string NormalAtlasDir = "Assets/AssetArt/Atlas";
- private const string UISpritePath = "Assets/AssetRaw/UIRaw";
- private const string UIAtlasPath = "Assets/AssetRaw/UIRaw/Atlas";
- private const string UIRawPath = "Assets/AssetRaw/UIRaw/UIRaw";
- private static List m_dirtyAtlasList = new List();
- private static Dictionary> m_allASprites = new Dictionary>();
- private static Dictionary m_uiAtlasMap = new Dictionary();
- private static bool m_inited = false;
- private static bool m_dirty = false;
-
- public static void Init()
- {
- if (m_inited)
- {
- return;
- }
-
- EditorApplication.update += CheckDirty;
-
- //读取所有图集信息
- string[] findAssets = AssetDatabase.FindAssets("t:SpriteAtlas", new[] { NormalAtlasDir });
- foreach (var findAsset in findAssets)
- {
- var path = AssetDatabase.GUIDToAssetPath(findAsset);
- SpriteAtlas sa = AssetDatabase.LoadAssetAtPath(path, typeof(SpriteAtlas)) as SpriteAtlas;
- if (sa == null)
- {
- Debug.LogError($"加载图集数据{path}失败");
- continue;
- }
-
- string atlasName = Path.GetFileNameWithoutExtension(path);
- var objects = sa.GetPackables();
- foreach (var o in objects)
- {
- if (!m_allASprites.TryGetValue(atlasName, out var list))
- {
- list = new List();
- m_allASprites.Add(atlasName, list);
- }
- list.Add(AssetDatabase.GetAssetPath(o));
- }
- }
-
- m_inited = true;
- }
-
- public static void CheckDirty()
- {
- if (m_dirty)
- {
- m_dirty = false;
-
- AssetDatabase.Refresh();
- float lastProgress = -1;
- for (int i = 0; i < m_dirtyAtlasList.Count; i++)
- {
- string atlasName = m_dirtyAtlasList[i];
- Debug.Log("更新图集 : " + atlasName);
- var curProgress = (float)i / m_dirtyAtlasList.Count;
- if (curProgress > lastProgress + 0.01f)
- {
- lastProgress = curProgress;
- var progressText = $"当前进度:{i}/{m_dirtyAtlasList.Count} {atlasName}";
- bool cancel = EditorUtility.DisplayCancelableProgressBar("刷新图集" + atlasName, progressText, curProgress);
- if (cancel)
- {
- break;
- }
- }
-
- bool isUI = atlasName.StartsWith("UIRaw");
- SaveAtlas(atlasName, isUI);
- }
-
- EditorUtility.ClearProgressBar();
- AssetDatabase.SaveAssets();
- AssetDatabase.Refresh();
- m_dirtyAtlasList.Clear();
- }
- }
-
- public static void OnImportSprite(string assetPath)
- {
- if (!assetPath.StartsWith(UISpritePath))
- {
- return;
- }
-
- TextureImporter ti = AssetImporter.GetAtPath(assetPath) as TextureImporter;
-
- if (ti != null)
- {
- var modify = false;
-
- if (assetPath.StartsWith(UISpritePath))
- {
- if (ti.textureType != TextureImporterType.Sprite)
- {
- ti.textureType = TextureImporterType.Sprite;
- modify = true;
- }
-
- if (!string.IsNullOrEmpty(ti.spritePackingTag))
- {
- ti.spritePackingTag = string.Empty;
- modify = true;
- }
-
- var setting = new TextureImporterSettings();
- ti.ReadTextureSettings(setting);
- if (setting.spriteGenerateFallbackPhysicsShape)
- {
- setting.spriteGenerateFallbackPhysicsShape = false;
- ti.SetTextureSettings(setting);
- modify = true;
- }
-
- if (IsKeepRawImage(assetPath))
- {
- //调整android格式
- var andPlatformSettings = ti.GetPlatformTextureSettings("Android");
- if (!andPlatformSettings.overridden)
- {
- andPlatformSettings.overridden = true;
- modify = true;
- }
-
- if (andPlatformSettings.format != TextureImporterFormat.ASTC_6x6)
- {
- andPlatformSettings.format = TextureImporterFormat.ASTC_6x6;
- ti.SetPlatformTextureSettings(andPlatformSettings);
- modify = true;
- }
-
- //调整ios格式
- var iosPlatformSettings = ti.GetPlatformTextureSettings("iPhone");
- if (!iosPlatformSettings.overridden)
- {
- iosPlatformSettings.overridden = true;
- modify = true;
- }
-
- if (iosPlatformSettings.format != TextureImporterFormat.ASTC_5x5)
- {
- iosPlatformSettings.format = TextureImporterFormat.ASTC_5x5;
- iosPlatformSettings.compressionQuality = 50;
- ti.SetPlatformTextureSettings(iosPlatformSettings);
- modify = true;
- }
- }
- }
-
- if (modify)
- {
- ti.SaveAndReimport();
- }
-
- if (ti.textureType == TextureImporterType.Sprite)
- {
- OnProcessSprite(assetPath);
- }
- }
- }
-
///
- /// 是否保持散图(不打图集)
+ /// 图集导入管线。
///
- ///
- ///
- public static bool IsKeepRawImage(string dirPath)
+ public class SpritePostprocessor : AssetPostprocessor
{
- return dirPath.Contains("UIRaw/Raw/") || dirPath.Contains("UIRaw_Raw_");
- }
-
- public static string GetSpritePath(string assetPath)
- {
- string path = assetPath.Substring(0, assetPath.LastIndexOf("."));
- path = path.Replace("Assets/AssetRaw/", "");
- return path;
- }
-
- ///
- /// 根据文件路径,返回图集名称
- ///
- ///
- ///
- public static string GetPackageTag(string fullName)
- {
- fullName = fullName.Replace("\\", "/");
- int idx = fullName.LastIndexOf("UIRaw", StringComparison.Ordinal);
- if (idx == -1)
+ static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths)
{
- return "";
- }
-
- if (IsKeepRawImage(fullName))
- {
- return "";
- }
-
- var atlasPath = fullName.Substring(idx);
- string str = atlasPath;
- str = str.Substring(0, str.LastIndexOf("/", StringComparison.Ordinal)).Replace("/", "_");
-
- return str;
- }
-
- public static void OnProcessSprite(string assetPath)
- {
- if (!assetPath.StartsWith("Assets"))
- {
- return;
- }
-
- if (assetPath.StartsWith("Assets/UIRaw_Delete"))
- {
- return;
- }
-
- Init();
-
- var spriteName = Path.GetFileNameWithoutExtension(assetPath);
- var spritePath = GetSpritePath(assetPath);
- if (!m_uiAtlasMap.TryGetValue(spriteName, out string oldAssetPath) || spritePath == oldAssetPath)
- {
- m_uiAtlasMap[spriteName] = spritePath;
- m_dirty = true;
- }
- else
- {
- Debug.LogError($"有重名的图片:{spriteName}\n旧图集:{oldAssetPath}\n新图集:{spritePath} ");
- m_uiAtlasMap[spriteName] = spritePath;
- m_dirty = true;
- }
-
- string atlasName = GetPackageTag(assetPath);
- if (string.IsNullOrEmpty(atlasName))
- {
- bool keepRaw = IsKeepRawImage(assetPath);
- if (!keepRaw)
+ foreach (var s in importedAssets)
{
- Debug.LogError($"empty packingTag of asset :{assetPath} !!!");
+ EditorSpriteSaveInfo.OnImportSprite(s);
}
- return;
- }
- else
- {
- List ret;
- if (!m_allASprites.TryGetValue(atlasName, out ret))
+ foreach (var s in deletedAssets)
{
- ret = new List();
- m_allASprites.Add(atlasName, ret);
+ EditorSpriteSaveInfo.OnDeleteSprite(s);
}
- if (!ret.Contains(assetPath))
+ foreach (var s in movedFromAssetPaths)
{
- ret.Add(assetPath);
- m_dirty = true;
- if (!m_dirtyAtlasList.Contains(atlasName))
+ EditorSpriteSaveInfo.OnDeleteSprite(s);
+ }
+
+ foreach (var s in movedAssets)
+ {
+ EditorSpriteSaveInfo.OnImportSprite(s);
+ }
+ }
+ }
+
+ public static class EditorSpriteSaveInfo
+ {
+ private const string NormalAtlasDir = "Assets/AssetArt/Atlas";
+ private const string UISpritePath = "Assets/AssetRaw/UIRaw";
+ private const string UIAtlasPath = "Assets/AssetRaw/UIRaw/Atlas";
+ private static readonly List _dirtyAtlasList = new List();
+ private static readonly Dictionary> _allASprites = new Dictionary>();
+ private static readonly Dictionary _uiAtlasMap = new Dictionary();
+ private static bool _isInit = false;
+ private static bool m_dirty = false;
+
+ public static void Init()
+ {
+ if (_isInit)
+ {
+ return;
+ }
+
+ EditorApplication.update += CheckDirty;
+
+ //读取所有图集信息
+ string[] findAssets = AssetDatabase.FindAssets("t:SpriteAtlas", new[] { NormalAtlasDir });
+ foreach (var findAsset in findAssets)
+ {
+ var path = AssetDatabase.GUIDToAssetPath(findAsset);
+ SpriteAtlas sa = AssetDatabase.LoadAssetAtPath(path, typeof(SpriteAtlas)) as SpriteAtlas;
+ if (sa == null)
{
- m_dirtyAtlasList.Add(atlasName);
+ Debug.LogError($"加载图集数据{path}失败");
+ continue;
}
- }
- }
- }
- public static void OnDeleteSprite(string assetPath)
- {
- if (assetPath.StartsWith("Assets/UIRaw_Delete"))
- {
- return;
- }
-
- if (!assetPath.StartsWith(UISpritePath))
- {
- return;
- }
-
- Init();
- string atlasName = GetPackageTag(assetPath);
- if (!m_allASprites.TryGetValue(atlasName, out var ret))
- {
- return;
- }
-
- //改成文件名的匹配
- if (!ret.Exists(s => Path.GetFileName(s) == Path.GetFileName(assetPath)))
- {
- return;
- }
-
- if (assetPath.StartsWith(UISpritePath))
- {
- var spriteName = Path.GetFileNameWithoutExtension(assetPath);
- if (m_uiAtlasMap.ContainsKey(spriteName))
- {
- m_uiAtlasMap.Remove(spriteName);
- m_dirty = true;
- }
- }
-
- ret.Remove(assetPath);
- m_dirty = true;
- if (!m_dirtyAtlasList.Contains(atlasName))
- {
- m_dirtyAtlasList.Add(atlasName);
- }
- }
-
- #region 更新图集
-
- public static void SaveAtlas(string atlasName, bool isUI)
- {
- List