Exemplo n.º 1
0
    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();
    }