diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderSeparator/SkeletonPartsRenderer.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderSeparator/SkeletonPartsRenderer.cs index f27524eba..e071ece38 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderSeparator/SkeletonPartsRenderer.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderSeparator/SkeletonPartsRenderer.cs @@ -94,7 +94,9 @@ namespace Spine.Unity { meshFilter.sharedMesh = null; } - public void RenderParts (ExposedList instructions, int startSubmesh, int endSubmesh) { + public void RenderParts (SkeletonRenderer skeletonRenderer, ExposedList instructions, + int startSubmesh, int endSubmesh) { + LazyIntialize(); // STEP 1: Create instruction @@ -125,9 +127,12 @@ namespace Spine.Unity { meshGenerator.FillVertexData(mesh); if (updateTriangles) { meshGenerator.FillTriangles(mesh); - meshRenderer.sharedMaterials = buffers.UpdateSharedMaterialsArray(); - } else if (materialsChanged) { - meshRenderer.sharedMaterials = buffers.UpdateSharedMaterialsArray(); + } + if (updateTriangles || materialsChanged) { + Material[] materials = buffers.UpdateSharedMaterialsArray(); + if (skeletonRenderer) + skeletonRenderer.ConfigureMaterials(materials, currentInstructions.submeshInstructions); + meshRenderer.sharedMaterials = materials; } meshGenerator.FillLateVertexData(mesh); } diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderSeparator/SkeletonRenderSeparator.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderSeparator/SkeletonRenderSeparator.cs index b5397c0c8..f7e078427 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderSeparator/SkeletonRenderSeparator.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderSeparator/SkeletonRenderSeparator.cs @@ -281,7 +281,7 @@ namespace Spine.Unity { if (assignPropertyBlock) currentRenderer.SetPropertyBlock(copiedBlock); // Render - currentRenderer.RenderParts(instruction.submeshInstructions, start, si + 1); + currentRenderer.RenderParts(skeletonRenderer, instruction.submeshInstructions, start, si + 1); start = si + 1; rendererIndex++; 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 e6c07ab65..7d29a4171 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderer.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderer.cs @@ -534,8 +534,7 @@ namespace Spine.Unity { materialsNeedUpdate = false; } - protected virtual void ConfigureMaterials (ExposedList instructions) { - Material[] sharedMaterials = rendererBuffers.sharedMaterials; + public virtual void ConfigureMaterials (Material[] sharedMaterials, ExposedList instructions) { if (customMaterialOverride.Count > 0) { for (int i = 0, count = sharedMaterials.Length; i < count; ++i) { Material material = sharedMaterials[i]; @@ -570,6 +569,10 @@ namespace Spine.Unity { #endif } + protected virtual void ConfigureMaterials (ExposedList instructions) { + ConfigureMaterials(rendererBuffers.sharedMaterials, instructions); + } + #if BUILT_IN_SPRITE_MASK_COMPONENT private void InitSpriteMaskMaterialsMaskMode (ref MaterialOverrideSet[] maskMaterials, SkeletonRenderer skeletonRenderer, string overrideSetName, diff --git a/spine-unity/Assets/Spine/package.json b/spine-unity/Assets/Spine/package.json index a5e288c03..5eab94bcc 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 and examples. Spine Examples can be installed via the Samples tab.", - "version": "4.3.36", + "version": "4.3.37", "unity": "2018.3", "author": { "name": "Esoteric Software",