diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/AssetUtility.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/AssetUtility.cs index 80d9ab792c..8a088251e0 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/AssetUtility.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/AssetUtility.cs @@ -664,7 +664,7 @@ public class AtlasRequirementLoader : AttachmentLoader { Material material = (Material)AssetDatabase.LoadAssetAtPath(materialPath, typeof(Material)); if (material == null) { - Shader defaultShader = Shader.Find(SpineEditorUtilities.Preferences.DefaultShader); + Shader defaultShader = GetDefaultShader(); material = defaultShader != null ? new Material(defaultShader) : null; if (material) { ApplyPMAOrStraightAlphaSettings(material, SpineEditorUtilities.Preferences.textureSettingsReference); @@ -737,6 +737,13 @@ public class AtlasRequirementLoader : AttachmentLoader { return loadedAtlas != null ? loadedAtlas : atlasAsset; } + public static Shader GetDefaultShader () { + Shader shader = Shader.Find(SpineEditorUtilities.Preferences.DefaultShader); + if (shader == null) shader = Shader.Find("Spine/Skeleton"); + if (shader == null) shader = Shader.Find("Standard"); + return shader; + } + public static bool SpriteAtlasSettingsNeedAdjustment (UnityEngine.U2D.SpriteAtlas spriteAtlas) { #if EXPOSES_SPRITE_ATLAS_UTILITIES UnityEditor.U2D.SpriteAtlasPackingSettings packingSettings = UnityEditor.U2D.SpriteAtlasExtensions.GetPackingSettings(spriteAtlas); @@ -851,24 +858,24 @@ public class AtlasRequirementLoader : AttachmentLoader { { string pageName = "SpriteAtlas"; - string materialPath = assetPath + "/" + primaryName + "_" + pageName + ".mat"; - Material mat = AssetDatabase.LoadAssetAtPath(materialPath); + Material material = AssetDatabase.LoadAssetAtPath(materialPath); - if (mat == null) { - mat = new Material(Shader.Find(SpineEditorUtilities.Preferences.defaultShader)); - ApplyPMAOrStraightAlphaSettings(mat, SpineEditorUtilities.Preferences.textureSettingsReference); - AssetDatabase.CreateAsset(mat, materialPath); + if (material == null) { + Shader defaultShader = GetDefaultShader(); + material = defaultShader != null ? new Material(defaultShader) : null; + ApplyPMAOrStraightAlphaSettings(material, SpineEditorUtilities.Preferences.textureSettingsReference); + AssetDatabase.CreateAsset(material, materialPath); } else { - vestigialMaterials.Remove(mat); + vestigialMaterials.Remove(material); } if (texture != null) - mat.mainTexture = texture; + material.mainTexture = texture; - EditorUtility.SetDirty(mat); + EditorUtility.SetDirty(material); // note: don't call AssetDatabase.SaveAssets() since this would trigger OnPostprocessAllAssets() every time unnecessarily. - populatingMaterials.Add(mat); //atlasAsset.materials[i] = mat; + populatingMaterials.Add(material); } atlasAsset.materials = populatingMaterials.ToArray(); diff --git a/spine-unity/Assets/Spine/package.json b/spine-unity/Assets/Spine/package.json index ac818cd00c..e6c56d0de5 100644 --- a/spine-unity/Assets/Spine/package.json +++ b/spine-unity/Assets/Spine/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.spine-unity", "displayName": "spine-unity Runtime", "description": "This plugin provides the spine-unity runtime core.", - "version": "4.1.14", + "version": "4.1.15", "unity": "2018.3", "author": { "name": "Esoteric Software",