private static UIAtlas SetAtlasInfo(GameObject go, AtlasConfig config, Material mat) { if (go == null || config == null || !config.IsUseful() || mat == null) { return(null); } TextAsset atlasTextAsset = AssetDatabase.LoadAssetAtPath <TextAsset>(config.AtlasTxtFilePath); if (atlasTextAsset != null) { UIAtlas uiAtlas = go.GetComponent <UIAtlas>(); uiAtlas.spriteMaterial = mat; if (uiAtlas.texture != null) { NGUIEditorTools.ImportTexture(uiAtlas.texture, false, false, !uiAtlas.premultipliedAlpha); } uiAtlas.MarkAsChanged(); NGUIJson.LoadSpriteData(uiAtlas, atlasTextAsset); uiAtlas.MarkAsChanged(); return(uiAtlas); } return(null); }
static void DoPackerCommond(AtlasConfig config) { if (config == null) { return; } string cmd = TexturePackerCommond.GetPackCommond(config.PhotosFolderPath, config.PhotoFullPath, config.AtlasTxtFullPath); ShellHelper.ShellRequest request = ShellHelper.ProcessCommand(cmd, null); EditorUtility.DisplayProgressBar("批量处理中...", "Shell脚本生成图集信息...", 0); request.onDone += () => { if (replaceAtlasConfigList.Count > 0) { AtlasConfig next_config = replaceAtlasConfigList.Dequeue(); DoPackerCommond(next_config); } else { EditorUtility.DisplayProgressBar("批量处理中...", "Shell脚本执行完毕...开始打图集...", 0); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); BatchCreateUIAtlasPrefabs(); } }; request.onError += () => { Debug.LogError("Texture Packer Error!!! Please Check Your Config"); }; }
public AtlasPublisher() { var atlasCfg = new AtlasConfig("http://10.0.75.2", 7101); observer = new CommandMetricObserver(atlasCfg); observer.Run(); }
public static bool ShouldUseOutputAtlasTexture(string atlasName) { AtlasConfig config = null; if (s_configs.TryGetValue(atlasName, out config)) { return(config.UseOutputAtlasTexture); } return(false); }
public static bool ShouldKeepAlpha(string atlasName) { AtlasConfig config = null; if (s_configs.TryGetValue(atlasName, out config)) { return(config.KeepAlpha); } return(false); }
public static Object CreatePrefab(GameObject go, AtlasConfig config) { if (go == null || config == null || !config.IsUseful()) { return(null); } Object tmpPrefab = PrefabUtility.CreateEmptyPrefab(config.AtlasOutputPath); tmpPrefab = PrefabUtility.ReplacePrefab(go, tmpPrefab, ReplacePrefabOptions.ConnectToPrefab); Object.DestroyImmediate(go); return(tmpPrefab); }
public static void AddNextCall(string groupName, string spriteName, SpriteCreateNextCall callback, Texture2D texture, object atlas) { if (sGroupSprite.ContainsKey(groupName)) { if (sGroupSprite[groupName].ContainsKey(spriteName)) { callback(sGroupSprite[groupName][spriteName]); return; } else { if (sNextCallDic[groupName].ContainsKey(spriteName)) { if (!sNextCallDic[groupName][spriteName].Contains(callback)) { sNextCallDic[groupName][spriteName].Add(callback); } } else { sNextCallDic[groupName][spriteName] = new List <SpriteCreateNextCall>() { callback }; sGroupSpriteNameDic[groupName].Add(spriteName); } } } else { sGroupSprite[groupName] = new Dictionary <string, Sprite>(); sNextCallDic[groupName] = new Dictionary <string, List <SpriteCreateNextCall> >(); sGroupSpriteNameDic[groupName] = new List <string>() { spriteName }; List <SpriteCreateNextCall> calls = new List <SpriteCreateNextCall>() { callback }; sNextCallDic[groupName].Add(spriteName, calls); AtlasConfig config = new AtlasConfig(); config.texture = texture; config.atlas = atlas; sAtlasDic[groupName] = config; } AsyncCreateGroup(groupName); }
private static void CreateAtlas(AtlasConfig config) { if (config == null) { return; } if (!config.IsUseful()) { Debug.LogError("Config :[" + config + "] Error ,Please check!!"); return; } #region 第一步:修改图片设置 TextureSetting(config.PhotoFilePath, TextureImporterType.Sprite); #endregion #region 第二步:根据图片创建材质 Material mat = AssetDatabase.LoadAssetAtPath <Material>(config.MaterialOutputPath); if (mat == null) { mat = new Material(Shader.Find("Unlit/Transparent Colored")); AssetDatabase.CreateAsset(mat, config.MaterialOutputPath); } else { mat.shader = Shader.Find("Unlit/Transparent Colored"); } mat.mainTexture = AssetDatabase.LoadAssetAtPath(config.PhotoFilePath, typeof(Texture2D)) as Texture2D; #endregion #region 第三步:创建预设 GameObject go = null; UIAtlas uiAtlas = null; if ((go = AssetDatabase.LoadAssetAtPath(config.AtlasOutputPath, typeof(GameObject)) as GameObject) != null) { //已存在预制体 uiAtlas = SetAtlasInfo(go, config, mat); } else { go = new GameObject(config.AtlasPrefabName); go.AddComponent <UIAtlas>(); uiAtlas = SetAtlasInfo(go, config, mat); CreatePrefab(go, config); } #endregion }
private static List <AtlasConfig> ParseAtlasConfig(string configFilePath) { if (string.IsNullOrEmpty(configFilePath)) { return(null); } if (!File.Exists(configFilePath)) { return(null); } List <AtlasConfig> configs = new List <AtlasConfig>(); using (StreamReader sr = new StreamReader(configFilePath)) { while (sr.Peek() >= 0) { string str = sr.ReadLine(); if (!string.IsNullOrEmpty(str)) { string[] datas = str.Split(new char[] { ',' }, System.StringSplitOptions.RemoveEmptyEntries); if (datas != null && datas.Length >= 3) { AtlasConfig config = null; string photoFolderPath = datas[0]; photoFolderPath = Application.dataPath.Replace("Assets", artsFolder) + Path.DirectorySeparatorChar + photoFolderPath; if (datas.Length == 3) { config = new AtlasConfig(photoFolderPath, datas[1], datas[2]); } else if (datas.Length == 5) { config = new AtlasConfig(photoFolderPath, datas[1], datas[2], datas[3], datas[4]); } configs.Add(config); } } } } return(configs); }
static public void AutoSetAtlasContents() { DirectoryInfo TarDirInfo = new DirectoryInfo(TarPath); var allFiles = TarDirInfo.GetFiles("*.spriteatlas", SearchOption.AllDirectories); foreach (FileInfo nFile in allFiles) { File.Delete(nFile.FullName); } DirectoryInfo rootDirInfo = new DirectoryInfo(OprPath); DirectoryInfo[] dirs = rootDirInfo.GetDirectories(); AtlasConfigAsset configAsset; List <AtlasConfig> configs; if (File.Exists(AtlasCongigPath)) { configAsset = AssetDatabase.LoadAssetAtPath <AtlasConfigAsset>(AtlasCongigPath); configs = new List <AtlasConfig>(configAsset.Configs); } else { configAsset = new AtlasConfigAsset(); configs = new List <AtlasConfig>(); } int time = TimeUtility.GetTimeStampEx(); foreach (DirectoryInfo dirInfo in dirs) { GeneratePerAtlas(dirInfo); if (configs.Find(p => p.Name == dirInfo.Name) == null) { AtlasConfig config = new AtlasConfig(); config.ID = time++; config.Name = dirInfo.Name; configs.Add(config); } } configAsset.Configs = configs.ToArray(); if (File.Exists(AtlasCongigPath)) { EditorUtility.SetDirty(configAsset); } else { AssetDatabase.CreateAsset(configAsset, AtlasCongigPath); } StringBuilder sb = new StringBuilder(); sb.AppendLine("AtlasConfig ="); sb.AppendLine("{"); for (int i = 0; i < configs.Count; i++) { sb.AppendLine($"\t{configs[i].Name} = {configs[i].ID},"); } sb.AppendLine("}"); if (!File.Exists(LuaAtlasConfigPath)) { //File.Delete(LuaAtlasConfigPath); File.Create(LuaAtlasConfigPath); } File.WriteAllText(LuaAtlasConfigPath, sb.ToString()); //DirectoryInfo BigTexDirInfo = new DirectoryInfo(BigTexPath); //var allBigTexs = BigTexDirInfo.GetFiles("*.png", SearchOption.AllDirectories); //foreach (FileInfo pngFile in allBigTexs) //{ // string curName = pngFile.Name; // int index = curName.IndexOf(".png"); // string ReName = "BigTex_" + curName.Substring(0, index); // var FileName = TarPath + ReName; // if (Directory.Exists(FileName)) // { // Directory.Delete(FileName, true); // } // Directory.CreateDirectory(FileName); // var AtlasName = FileName + "/" + ReName + ".spriteatlas"; // SpriteAtlas atlas = new SpriteAtlas(); // AssetDatabase.CreateAsset(atlas, AtlasName); // AtlasSetting(atlas); // string str = pngFile.FullName.Substring(pngFile.FullName.IndexOf("Assets")); // atlas.Add(new[] { AssetDatabase.LoadAssetAtPath<Sprite>(str) }); // AssetDatabase.SaveAssets(); //} }