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(); } }
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; } } } } }
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(); }
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(); } }