| | |
| | | {
|
| | | 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)
|
| | |
| | | };
|
| | | 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();
|
| | |
|
| | |
| | |
|
| | | 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)
|
| | |
| | | }
|
| | |
|
| | | string spriteFilePath = rootPath + "/" + spritefilePathName;
|
| | | UpdateAtlas(spriteAtlas, spriteFilePath, new List<string>());
|
| | | |
| | |
|
| | | UpdateAtlas(spriteAtlas, spriteFilePath, new List<string>(), filePath);
|
| | |
|
| | | // 打包进度
|
| | | EditorUtility.DisplayProgressBar("打包图集中...", "正在处理:" + spritefilePathName, index / so.spriteSettings.Length);
|
| | |
| | | /// 创建图集
|
| | | /// </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 图集基础设置
|
| | |
|
| | |
| | | enableTightPacking = setting.enableTightPacking,
|
| | | padding = setting.padding,
|
| | | };
|
| | | atlas.SetPackingSettings(packSetting);
|
| | | atlasImporter.packingSettings = packSetting;
|
| | |
|
| | | #endregion
|
| | |
|
| | |
| | | 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>
|
| | | /// 每个图集的所有图片路径 -- 记得用之前清空
|
| | |
| | | /// 更新图集内容
|
| | | /// </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)
|
| | | {
|
| | |
| | | atlas.Add(new UnityEngine.Object[] { spriteObj });
|
| | | }
|
| | | }
|
| | |
|
| | | SpriteAtlasAsset.Save(atlas, filePath);
|
| | | }
|
| | |
|
| | | /// <summary>
|