From a3ff52b7efbd4b19453c9a2b30cb85b928432fcc Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期一, 22 七月 2024 19:18:31 +0800
Subject: [PATCH] 10220 新google上架包-升级引擎 -优化图集生成

---
 Assets/Editor/Tool/UpdateSpritePackingSetting.cs        |   60 ++++++++++++++++++++---------
 Assets/Launch/ResourcesModel.cs                         |    2 
 Assets/Editor/AssetBundleBrowser/AssetBundleBuildTab.cs |    4 +-
 3 files changed, 44 insertions(+), 22 deletions(-)

diff --git a/Assets/Editor/AssetBundleBrowser/AssetBundleBuildTab.cs b/Assets/Editor/AssetBundleBrowser/AssetBundleBuildTab.cs
index 0b24fde..f96b653 100644
--- a/Assets/Editor/AssetBundleBrowser/AssetBundleBuildTab.cs
+++ b/Assets/Editor/AssetBundleBrowser/AssetBundleBuildTab.cs
@@ -368,7 +368,7 @@
                 EditorApplication.delayCall += ExcuteBuildVideo;
             }
 
-            if (GUILayout.Button("Levels"))
+            if (GUILayout.Button("Maps"))
             {
                 EditorApplication.delayCall += ExcuteBuildLevels;
             }
@@ -460,7 +460,7 @@
             EditorGUILayout.Space();
             GUILayout.BeginHorizontal();
 
-            ClientPackage.obfuscatorEnabled = EditorGUILayout.Toggle("Obfuscator Enable ", ClientPackage.obfuscatorEnabled, GUILayout.Width(250));
+            //ClientPackage.obfuscatorEnabled = EditorGUILayout.Toggle("Obfuscator Enable ", ClientPackage.obfuscatorEnabled, GUILayout.Width(250));
 
 #if UNITY_STANDALONE
             if (GUILayout.Button("EXE"))
diff --git a/Assets/Editor/Tool/UpdateSpritePackingSetting.cs b/Assets/Editor/Tool/UpdateSpritePackingSetting.cs
index 8465c25..0435100 100644
--- a/Assets/Editor/Tool/UpdateSpritePackingSetting.cs
+++ b/Assets/Editor/Tool/UpdateSpritePackingSetting.cs
@@ -103,8 +103,8 @@
     {
         string rootPath_BuiltIn = Application.dataPath + "/ResourcesOut/BuiltIn/Sprites";
         string spriteRelativePath_BuiltIn = "Assets/ResourcesOut/BuiltIn/Sprites";
-
-        SpriteAtlas spriteAtlas = AssetDatabase.LoadAssetAtPath(spriteRelativePath_BuiltIn + "/" + "sprites.spriteatlas", typeof(UnityEngine.Object)) as SpriteAtlas;
+        var builtInSpritePath = spriteRelativePath_BuiltIn + "/sprites.spriteatlasv2";
+        SpriteAtlasAsset spriteAtlas = SpriteAtlasAsset.Load(builtInSpritePath);
 
         // 涓嶅瓨鍦ㄥ垯鍒涘缓鍚庢洿鏂板浘闆�
         if (spriteAtlas == null)
@@ -140,9 +140,10 @@
             };
             spriteAtlas = CreateSpriteAtlas(spriteRelativePath_BuiltIn, setting);
         }
-        string spriteFilePath = rootPath_BuiltIn;
         List<string> excludePngs = new List<string>() { "Launch_1.png", "Launch_2.png", "Launch_3.png", "LoginBackGround.png", "TB_DL_Logo.png" };
-        UpdateAtlas(spriteAtlas, spriteFilePath, excludePngs);
+
+        SpriteAtlas spriteAtlasTmp = AssetDatabase.LoadAssetAtPath(builtInSpritePath, typeof(UnityEngine.Object)) as SpriteAtlas;
+        UpdateAtlas(spriteAtlas, rootPath_BuiltIn, excludePngs, builtInSpritePath);
 
         AssetDatabase.Refresh();
 
@@ -173,7 +174,8 @@
 
             spritefilePathName = setting.folderName;
 
-            SpriteAtlas spriteAtlas = AssetDatabase.LoadAssetAtPath(spriteRelativePath + "/" + spritefilePathName + ".spriteatlas", typeof(UnityEngine.Object)) as SpriteAtlas;
+            var filePath = spriteRelativePath + "/" + spritefilePathName + ".spriteatlasv2";
+            SpriteAtlasAsset spriteAtlas = SpriteAtlasAsset.Load(filePath);
 
             // 涓嶅瓨鍦ㄥ垯鍒涘缓鍚庢洿鏂板浘闆�
             if (spriteAtlas == null)
@@ -182,7 +184,9 @@
             }
 
             string spriteFilePath = rootPath + "/" + spritefilePathName;
-            UpdateAtlas(spriteAtlas, spriteFilePath, new List<string>());
+            
+
+            UpdateAtlas(spriteAtlas, spriteFilePath, new List<string>(), filePath);
 
             // 鎵撳寘杩涘害
             EditorUtility.DisplayProgressBar("鎵撳寘鍥鹃泦涓�...", "姝e湪澶勭悊:" + spritefilePathName, index / so.spriteSettings.Length);
@@ -208,9 +212,13 @@
     /// 鍒涘缓鍥鹃泦
     /// </summary>
     /// <param name="atlasName">鍥鹃泦鍚嶅瓧</param>
-    private static SpriteAtlas CreateSpriteAtlas(string outPath, SpriteSettingConfig.SpriteSetting setting)
+    private static SpriteAtlasAsset CreateSpriteAtlas(string outPath, SpriteSettingConfig.SpriteSetting setting)
     {
-        SpriteAtlas atlas = new SpriteAtlas();
+        string atlasPath = outPath + "/" + setting.folderName + ".spriteatlasv2";
+        CreateEmptySpriteAtlas(atlasPath);
+
+        
+        SpriteAtlasImporter atlasImporter = SpriteAtlasImporter.GetAtPath(atlasPath) as SpriteAtlasImporter;
 
         #region 鍥鹃泦鍩虹璁剧疆
 
@@ -221,7 +229,7 @@
             enableTightPacking = setting.enableTightPacking,
             padding = setting.padding,
         };
-        atlas.SetPackingSettings(packSetting);
+        atlasImporter.packingSettings = packSetting;
 
         #endregion
 
@@ -234,30 +242,40 @@
             sRGB = setting.sRGB,
             filterMode = setting.filterMode,
         };
-        atlas.SetTextureSettings(textureSettings);
+        atlasImporter.textureSettings = textureSettings;
 
         #endregion
 
         #region 鍒嗗钩鍙拌缃浘闆嗘牸寮�
 
-        foreach(SpriteSettingConfig.PlatformSetting platformSetting in setting.platformSettings)
+        foreach (SpriteSettingConfig.PlatformSetting platformSetting in setting.platformSettings)
         {
-            TextureImporterPlatformSettings settingPlatform = atlas.GetPlatformSettings(platformSetting.name);
+            TextureImporterPlatformSettings settingPlatform = atlasImporter.GetPlatformSettings(platformSetting.name);
             settingPlatform.overridden = true;
             settingPlatform.maxTextureSize = platformSetting.maxTextureSize;
             settingPlatform.textureCompression = platformSetting.textureCompression;
             settingPlatform.format = platformSetting.textureFormat;
-            atlas.SetPlatformSettings(settingPlatform);
+            atlasImporter.SetPlatformSettings(settingPlatform);
         }
 
         #endregion
-
-        string atlasPath = outPath + "/" + setting.folderName + ".spriteatlas";
-        AssetDatabase.CreateAsset(atlas, atlasPath);
-        AssetDatabase.SaveAssets();
+        atlasImporter.includeInBuild = true;
+        atlasImporter.SaveAndReimport();
+        //atlas.Add(objectsForPack);
+        SpriteAtlasAsset atlas = SpriteAtlasAsset.Load(atlasPath);
+        
 
         return atlas;
     }
+
+    static void CreateEmptySpriteAtlas(string atlasPath)
+    {
+        SpriteAtlasAsset.Save(new SpriteAtlasAsset(), atlasPath);
+        AssetDatabase.SaveAssets();
+        AssetDatabase.Refresh();
+    }
+
+    
 
     /// <summary>
     /// 姣忎釜鍥鹃泦鐨勬墍鏈夊浘鐗囪矾寰�  --  璁板緱鐢ㄤ箣鍓嶆竻绌�
@@ -268,13 +286,15 @@
     /// 鏇存柊鍥鹃泦鍐呭
     /// </summary>
     /// <param name="atlas">鍥鹃泦</param>
-    static void UpdateAtlas(SpriteAtlas atlas, string spriteFilePath, List<string> excludePng)
+    static void UpdateAtlas(SpriteAtlasAsset atlas, string spriteFilePath, List<string> excludePng, string filePath)
     {
         textureFullName.Clear();
         FileName(spriteFilePath, excludePng);
 
+        SpriteAtlas spriteAtlasTmp = AssetDatabase.LoadAssetAtPath(filePath, typeof(UnityEngine.Object)) as SpriteAtlas;
+
         // 鑾峰彇鍥鹃泦涓嬪浘鐗�
-        List<UnityEngine.Object> packables = new List<UnityEngine.Object>(atlas.GetPackables());
+        List<UnityEngine.Object> packables = new List<UnityEngine.Object>(spriteAtlasTmp.GetPackables());
 
         foreach (string item in textureFullName)
         {
@@ -286,6 +306,8 @@
                 atlas.Add(new UnityEngine.Object[] { spriteObj });
             }
         }
+
+        SpriteAtlasAsset.Save(atlas, filePath);
     }
 
     /// <summary>
diff --git a/Assets/Launch/ResourcesModel.cs b/Assets/Launch/ResourcesModel.cs
index 7525e5d..e5f9a13 100644
--- a/Assets/Launch/ResourcesModel.cs
+++ b/Assets/Launch/ResourcesModel.cs
@@ -256,7 +256,7 @@
             }
             else
             {
-                var spriteAtlas = UnityEditor.AssetDatabase.LoadAssetAtPath<SpriteAtlas>("Assets/ResourcesOut/BuiltIn/Sprites/sprites.spriteatlas");
+                var spriteAtlas = UnityEditor.AssetDatabase.LoadAssetAtPath<SpriteAtlas>("Assets/ResourcesOut/BuiltIn/Sprites/sprites.spriteatlasv2");
                 sprite = spriteAtlas.GetSprite(name);
             }
 

--
Gitblit v1.8.0