diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonGraphic.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonGraphic.cs index 9e4f43f42..d01fb7523 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonGraphic.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonGraphic.cs @@ -341,7 +341,15 @@ namespace Spine.Unity { #region API protected Skeleton skeleton; - public Skeleton Skeleton { get { return skeleton; } set { skeleton = value; } } + public Skeleton Skeleton { + get { + Initialize(false); + return skeleton; + } + set { + skeleton = value; + } + } public SkeletonData SkeletonData { get { return skeleton == null ? null : skeleton.data; } } public bool IsValid { get { return skeleton != null; } } @@ -474,7 +482,6 @@ namespace Spine.Unity { public void Initialize (bool overwrite) { if (this.IsValid && !overwrite) return; - // Make sure none of the stuff is null if (this.skeletonDataAsset == null) return; var skeletonData = this.skeletonDataAsset.GetSkeletonData(false); if (skeletonData == null) return; diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderer.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderer.cs index bf442ce19..c68f50e65 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderer.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderer.cs @@ -186,14 +186,16 @@ namespace Spine.Unity { generateMeshOverride += value; if (disableRenderingOnOverride && generateMeshOverride != null) { Initialize(false); - meshRenderer.enabled = false; + if (meshRenderer) + meshRenderer.enabled = false; } } remove { generateMeshOverride -= value; if (disableRenderingOnOverride && generateMeshOverride == null) { Initialize(false); - meshRenderer.enabled = true; + if (meshRenderer) + meshRenderer.enabled = true; } } } diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Utility/MaterialChecks.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Utility/MaterialChecks.cs index f0a534c3b..68ec0d9f4 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Utility/MaterialChecks.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Utility/MaterialChecks.cs @@ -251,8 +251,11 @@ namespace Spine.Unity { } static bool IsPMAMaterial (Material material) { - return (material.HasProperty(STRAIGHT_ALPHA_PARAM_ID) && material.GetInt(STRAIGHT_ALPHA_PARAM_ID) == 0) || - material.IsKeywordEnabled(ALPHAPREMULTIPLY_ON_KEYWORD); + bool usesAlphaPremultiplyKeyword = IsSpriteShader(material); + if (usesAlphaPremultiplyKeyword) + return material.IsKeywordEnabled(ALPHAPREMULTIPLY_ON_KEYWORD); + else + return material.HasProperty(STRAIGHT_ALPHA_PARAM_ID) && material.GetInt(STRAIGHT_ALPHA_PARAM_ID) == 0; } static bool IsURP3DMaterial (Material material) { @@ -280,14 +283,18 @@ namespace Spine.Unity { break; } } - bool isShaderWithMeshNormals = - material.shader.name.Contains("Spine/Sprite/Pixel Lit") || - material.shader.name.Contains("Spine/Sprite/Vertex Lit") || - material.shader.name.Contains("2D/Spine/Sprite") || // covers both URP and LWRP - material.shader.name.Contains("Pipeline/Spine/Sprite"); // covers both URP and LWRP + bool isShaderWithMeshNormals = IsSpriteShader(material); return isShaderWithMeshNormals && !anyFixedNormalSet; } + static bool IsSpriteShader (Material material) { + string shaderName = material.shader.name; + return shaderName.Contains("Spine/Sprite/Pixel Lit") || + shaderName.Contains("Spine/Sprite/Vertex Lit") || + shaderName.Contains("2D/Spine/Sprite") || // covers both URP and LWRP + shaderName.Contains("Pipeline/Spine/Sprite"); // covers both URP and LWRP + } + static bool RequiresTintBlack (Material material) { bool isTintBlackShader = material.shader.name.Contains("Spine") && diff --git a/spine-unity/Modules/com.esotericsoftware.spine.timeline/package.json b/spine-unity/Modules/com.esotericsoftware.spine.timeline/package.json index 664c571e6..9c5276385 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.timeline/package.json +++ b/spine-unity/Modules/com.esotericsoftware.spine.timeline/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.timeline", "displayName": "Spine Timeline Extensions", "description": "This plugin provides integration of spine-unity for the Unity Timeline.\n\nPrerequisites:\nIt requires a working installation of the spine-unity runtime, version 4.0.\n(See http://esotericsoftware.com/git/spine-runtimes/spine-unity)", - "version": "4.0.2", + "version": "4.0.3", "unity": "2018.3", "author": { "name": "Esoteric Software", @@ -10,7 +10,7 @@ "url": "http://esotericsoftware.com/" }, "dependencies": { - "com.unity.timeline": "1.0.0" + "com.unity.timeline": "1.2.10" }, "keywords": [ "spine",