void ProcessAndSave(Texture2D atlas, TextureAtlasInfo tai, Material material, bool isNew) { LoadAssets(); Rect[] results = atlas.PackTextures(m_srcTextures.ToArray(), 0, 1024); atlas.Apply(); byte[] bytes = atlas.EncodeToPNG(); File.WriteAllBytes(m_outputFile, bytes); if(isNew) { AssetDatabase.ImportAsset(m_outputFile.Substring(m_outputFile.IndexOf("Assets"))); } else { EditorUtility.SetDirty(atlas); } var a = AssetDatabase.LoadAssetAtPath(m_outputFile.Substring(m_outputFile.IndexOf("Assets")), typeof(Texture2D)) as Texture2D; material.mainTexture = a; if(isNew) { AssetDatabase.CreateAsset(material, m_materialOutputFile); } else { EditorUtility.SetDirty(material); } AssetDatabase.ImportAsset(m_materialOutputFile); material = AssetDatabase.LoadAssetAtPath(m_materialOutputFile, typeof(Material)) as Material; tai.SetInitialData(m_src, m_files, results, a, material); if(isNew) { AssetDatabase.CreateAsset(tai, m_atlasInfoOutputFile); } else { EditorUtility.SetDirty(tai); } UnloadAssets(); }