public void OnWizardCreate()
        {
            try{
                Debug.ClearDeveloperConsole();
                if (animTextAsset == null || altasTexture == null || altasTextAsset == null)
                {
                    return;
                }
                if (altasTexture && !string.IsNullOrEmpty(altasTextAsset))
                {
                    SetAtlasTextureImporter(AssetDatabase.GetAssetPath(altasTexture));
                    SpineJsonParse.ParseTextureAtlas(this, altasTexture, altasTextAsset);
                }
                if (otherTextures != null)
                {
                    foreach (Atlas atlas in otherTextures)
                    {
                        SetAtlasTextureImporter(AssetDatabase.GetAssetPath(atlas.texture));
                        SpineJsonParse.ParseTextureAtlas(this, atlas.texture, atlas.atlasText);
                    }
                }
                CreateTextureFramesAndMaterails();
                SpineJsonParse.ParseAnimJsonData(this);
            }finally{
                SpineAnimFile.Dispose();
                SpineShowArmature.Dispose();

                bonesKV     = null;
                slotsKV     = null;
                slotsDataKV = null;
                spriteKV    = null;


                atlasKV = null;
                ffdKV   = null;

                spriteMeshUsedMatKV = null;
                animList            = null;
                bonePoseKV          = null;

                bones           = null;
                slots           = null;
                m_TextureFrames = null;

                DestroyImmediate(this);
                System.GC.Collect();
            }
        }
Esempio n. 2
0
 static void CreateSpriteFrame()
 {
     if (Selection.activeObject is TextureFrames)
     {
         TextureFrames tfs = AssetDatabase.LoadAssetAtPath <TextureFrames>(AssetDatabase.GetAssetPath(Selection.activeObject));
         if (tfs && tfs.frames != null && tfs.frames.Length > 0)
         {
             GameObject  go = new GameObject();
             SpriteFrame sf = go.AddComponent <SpriteFrame>();
             sf.CreateQuad();
             sf.textureFrames = tfs;
             foreach (Material mat in tfs.materials)
             {
                 if (mat.name.LastIndexOf("_UI_Mat") == -1)
                 {
                     sf.material = tfs.materials[0];
                     break;
                 }
             }
         }
     }
 }
Esempio n. 3
0
        void CreateTextureFramesAndMaterails()
        {
            //create TextureFrames
            string path = AssetDatabase.GetAssetPath(animTextAsset);

            path            = path.Substring(0, path.LastIndexOf('/'));
            m_TextureFrames = AssetDatabase.LoadAssetAtPath <TextureFrames>(path + "/TextureFrames.asset");
            if (m_TextureFrames == null)
            {
                m_TextureFrames = ScriptableObject.CreateInstance <TextureFrames>();
                AssetDatabase.CreateAsset(m_TextureFrames, path + "/TextureFrames.asset");
            }
            List <TextureFrame> frameList = new List <TextureFrame>();
            List <Material>     mats      = new List <Material>();

            if (altasTexture != null && altasTextAsset != null)
            {
                string pathMat = AssetDatabase.GetAssetPath(altasTexture);
                pathMat = pathMat.Substring(0, pathMat.LastIndexOf('.')) + namePrefix + "_Mat.mat";
                Material mat = AssetDatabase.LoadAssetAtPath <Material>(pathMat);
                if (!mat)
                {
                    mat = new Material(Shader.Find(shader));
                    AssetDatabase.CreateAsset(mat, pathMat);
                }
                mat.mainTexture = altasTexture;
                mats.Add(mat);
                List <TextureFrame> frames = TextureFrames.ParseDragonBoneAtlasText(altasTextAsset.ToString().Replace('/', '_'), mat);
                frameList.AddRange(frames);
                if (isUGUI)
                {
                    pathMat = AssetDatabase.GetAssetPath(altasTexture);
                    pathMat = pathMat.Substring(0, pathMat.LastIndexOf('.')) + "_Mat.mat";
                    mat     = AssetDatabase.LoadAssetAtPath <Material>(pathMat);
                    if (mat)
                    {
                        foreach (TextureFrame frame in frames)
                        {
                            frame.material = mat;
                        }
                        mats.Add(mat);
                    }
                }
                else
                {
                    pathMat = AssetDatabase.GetAssetPath(altasTexture);
                    pathMat = pathMat.Substring(0, pathMat.LastIndexOf('.')) + "_UI_Mat.mat";
                    mat     = AssetDatabase.LoadAssetAtPath <Material>(pathMat);
                    if (mat)
                    {
                        foreach (TextureFrame frame in frames)
                        {
                            frame.uiMaterial = mat;
                        }
                        mats.Add(mat);
                    }
                }
            }
            if (otherTextures != null && otherTextures.Length > 0)
            {
                foreach (Atlas atlas in otherTextures)
                {
                    string pathMat = AssetDatabase.GetAssetPath(atlas.texture);
                    pathMat = pathMat.Substring(0, pathMat.LastIndexOf('.')) + namePrefix + "_Mat.mat";;
                    Material mat = AssetDatabase.LoadAssetAtPath <Material>(pathMat);
                    if (!mat)
                    {
                        mat = new Material(Shader.Find(shader));
                        AssetDatabase.CreateAsset(mat, pathMat);
                    }
                    mat.mainTexture = atlas.texture;
                    mats.Add(mat);

                    List <TextureFrame> frames = TextureFrames.ParseDragonBoneAtlasText(atlas.atlasText.ToString(), mat);
                    frameList.AddRange(frames);
                    if (isUGUI)
                    {
                        pathMat = AssetDatabase.GetAssetPath(atlas.texture);
                        pathMat = pathMat.Substring(0, pathMat.LastIndexOf('.')) + "_Mat.mat";
                        mat     = AssetDatabase.LoadAssetAtPath <Material>(pathMat);
                        if (mat)
                        {
                            foreach (TextureFrame frame in frames)
                            {
                                frame.material = mat;
                            }
                            mats.Add(mat);
                        }
                    }
                    else
                    {
                        pathMat = AssetDatabase.GetAssetPath(atlas.texture);
                        pathMat = pathMat.Substring(0, pathMat.LastIndexOf('.')) + "_UI_Mat.mat";
                        mat     = AssetDatabase.LoadAssetAtPath <Material>(pathMat);
                        if (mat)
                        {
                            foreach (TextureFrame frame in frames)
                            {
                                frame.uiMaterial = mat;
                            }
                            mats.Add(mat);
                        }
                    }
                }
            }
            m_TextureFrames.frames    = frameList.ToArray();
            m_TextureFrames.materials = mats.ToArray();
            AssetDatabase.Refresh();
            EditorUtility.SetDirty(m_TextureFrames);
            AssetDatabase.SaveAssets();
        }
Esempio n. 4
0
        public void OnWizardCreate()
        {
            textureScale = Mathf.Clamp(textureScale, 0.1f, 1f);
            try{
                Debug.ClearDeveloperConsole();
                if (animTextAsset == null || altasTexture == null || altasTextAsset == null)
                {
                    return;
                }
                if (altasTexture && altasTextAsset)
                {
                    SetAtlasTextureImporter(AssetDatabase.GetAssetPath(altasTexture));
                    DragonBoneJsonParse.ParseTextureAtlas(this, altasTexture, altasTextAsset);
                }
                if (otherTextures != null)
                {
                    foreach (Atlas atlas in otherTextures)
                    {
                        SetAtlasTextureImporter(AssetDatabase.GetAssetPath(atlas.texture));
                        DragonBoneJsonParse.ParseTextureAtlas(this, atlas.texture, atlas.atlasText);
                    }
                }
                CreateTextureFramesAndMaterails();
                DragonBoneJsonParse.ParseAnimJsonData(this);
                DragonBoneShowArmature.SplitTextureToSprite();

                if (genPrefab)
                {
                    for (int i = 0; i < m_prefabs.Count; ++i)
                    {
                        GameObject target       = m_prefabs[i];
                        var        instanceRoot = PrefabUtility.FindRootGameObjectWithSameParentPrefab(target);
                        var        targetPrefab = UnityEditor.PrefabUtility.GetPrefabParent(instanceRoot);
                        PrefabUtility.ReplacePrefab(
                            instanceRoot,
                            targetPrefab,
                            ReplacePrefabOptions.ConnectToPrefab
                            );
                    }
                }
            }
            finally
            {
                DragonBoneAnimFile.Dispose();
                DragonBoneShowArmature.Dispose();

                bonesKV     = null;
                slotsKV     = null;
                slotsDataKV = null;
                spriteKV    = null;


                atlasKV    = null;
                bonePoseKV = null;
                ffdKV      = null;

                spriteMeshUsedMatKV = null;
                armatureAnimList    = null;

                m_prefabs = null;

                m_bones         = null;
                m_slots         = null;
                m_TextureFrames = null;
                m_sonArmature   = null;

                DestroyImmediate(this);
                System.GC.Collect();
            }
        }