diff --git a/spine-ts/spine-webgl/src/SkeletonDebugRenderer.ts b/spine-ts/spine-webgl/src/SkeletonDebugRenderer.ts index f6cbbd8e6..f6e33faeb 100644 --- a/spine-ts/spine-webgl/src/SkeletonDebugRenderer.ts +++ b/spine-ts/spine-webgl/src/SkeletonDebugRenderer.ts @@ -195,7 +195,7 @@ export class SkeletonDebugRenderer implements Disposable { for (let i = 0, n = bones.length; i < n; i++) { let bone = bones[i]; if (ignoredBones && ignoredBones.indexOf(bone.data.name) > -1) continue; - shapes.circle(true, bone.worldX, bone.worldY, 3 * this.scale, SkeletonDebugRenderer.GREEN, 8); + shapes.circle(true, bone.worldX, bone.worldY, 3 * this.scale, this.boneOriginColor, 8); } } diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/BlendModeMaterialsUtility.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/BlendModeMaterialsUtility.cs index 06b0faf1f..44627aca5 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/BlendModeMaterialsUtility.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/BlendModeMaterialsUtility.cs @@ -203,40 +203,58 @@ namespace Spine.Unity.Editor { var renderableAttachment = entry.Attachment as IHasTextureRegion; if (renderableAttachment != null) { var originalRegion = (AtlasRegion)renderableAttachment.Region; - Sequence sequence = null; - if (originalRegion == null && (sequence = renderableAttachment.Sequence) != null) { - if (sequence.Regions != null && sequence.Regions.Length > 0) - originalRegion = (AtlasRegion)sequence.Regions[0]; - } - bool replacementExists = replacementMaterials.Exists( - replacement => replacement.pageName == originalRegion.page.name); - if (!replacementExists) { - bool createdNewMaterial; - var replacement = CreateOrLoadReplacementMaterial(originalRegion, materialTemplate, materialSuffix, out createdNewMaterial); - if (replacement != null) { - replacementMaterials.Add(replacement); - anyReplacementMaterialsChanged = true; - if (createdNewMaterial) { - Debug.Log(string.Format("Created blend mode Material '{0}' for SkeletonData asset '{1}'.", - replacement.material.name, skeletonDataAsset), replacement.material); + if (originalRegion != null) { + anyCreationFailed |= CreateForRegion( + ref replacementMaterials, ref anyReplacementMaterialsChanged, + originalRegion, materialTemplate, materialSuffix, skeletonDataAsset); + } else { + Sequence sequence = renderableAttachment.Sequence; + if (sequence != null && sequence.Regions != null) { + for (int i = 0, count = sequence.Regions.Length; i < count; ++i) { + originalRegion = (AtlasRegion)sequence.Regions[i]; + anyCreationFailed |= CreateForRegion( + ref replacementMaterials, ref anyReplacementMaterialsChanged, + originalRegion, materialTemplate, materialSuffix, skeletonDataAsset); } - } else { - Debug.LogError(string.Format("Failed creating blend mode Material for SkeletonData asset '{0}'," + - " atlas page '{1}', template '{2}'.", - skeletonDataAsset.name, originalRegion.page.name, materialTemplate.name), - skeletonDataAsset); - anyCreationFailed = true; } } } } } - skeletonDataAsset.isUpgradingBlendModeMaterials = false; EditorUtility.SetDirty(skeletonDataAsset); return !anyCreationFailed; } + protected static bool CreateForRegion (ref List replacementMaterials, + ref bool anyReplacementMaterialsChanged, + AtlasRegion originalRegion, Material materialTemplate, string materialSuffix, + SkeletonDataAsset skeletonDataAsset) { + + bool anyCreationFailed = false; + bool replacementExists = replacementMaterials.Exists( + replacement => replacement.pageName == originalRegion.page.name); + if (!replacementExists) { + bool createdNewMaterial; + var replacement = CreateOrLoadReplacementMaterial(originalRegion, materialTemplate, materialSuffix, out createdNewMaterial); + if (replacement != null) { + replacementMaterials.Add(replacement); + anyReplacementMaterialsChanged = true; + if (createdNewMaterial) { + Debug.Log(string.Format("Created blend mode Material '{0}' for SkeletonData asset '{1}'.", + replacement.material.name, skeletonDataAsset), replacement.material); + } + } else { + Debug.LogError(string.Format("Failed creating blend mode Material for SkeletonData asset '{0}'," + + " atlas page '{1}', template '{2}'.", + skeletonDataAsset.name, originalRegion.page.name, materialTemplate.name), + skeletonDataAsset); + anyCreationFailed = true; + } + } + return anyCreationFailed; + } + protected static string GetBlendModeMaterialPath (AtlasPage originalPage, string materialSuffix) { var originalMaterial = originalPage.rendererObject as Material; var originalPath = AssetDatabase.GetAssetPath(originalMaterial); 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 22f9e53c7..44b7e6a4a 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Utility/MaterialChecks.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Utility/MaterialChecks.cs @@ -96,7 +96,12 @@ namespace Spine.Unity { "\nWarning: 'Canvas Group Tint Black' is enabled at SkeletonGraphic but not 'CanvasGroup Compatible' at the Material!\n\nPlease\n" + "a) enable 'CanvasGroup Compatible' at the Material or\n" + "b) disable 'Canvas Group Tint Black' at the SkeletonGraphic component under 'Advanced'.\n" - + "You may want to duplicate the 'SkeletonGraphicDefault' material and change settings at the duplicate to not affect all instances."; + + "You may want to duplicate the 'SkeletonGraphicTintBlack' material and change settings at the duplicate to not affect all instances."; + public static readonly string kCanvasGroupCompatibleDisabledMessage = + "\nWarning: 'CanvasGroup Compatible' is enabled at the Material but 'Canvas Group Tint Black' is disabled at SkeletonGraphic!\n\nPlease\n" + + "a) disable 'CanvasGroup Compatible' at the Material or\n" + + "b) enable 'Canvas Group Tint Black' at the SkeletonGraphic component under 'Advanced'.\n" + + "You may want to duplicate the 'SkeletonGraphicTintBlack' material and change settings at the duplicate to not affect all instances."; public static bool IsMaterialSetupProblematic (SkeletonRenderer renderer, ref string errorMessage) { var materials = renderer.GetComponent().sharedMaterials; @@ -152,6 +157,11 @@ namespace Spine.Unity { isProblematic = true; errorMessage += kCanvasGroupCompatibleMessage; } + if (settings.tintBlack == true && settings.canvasGroupTintBlack == false + && IsCanvasGroupCompatible(material)) { + isProblematic = true; + errorMessage += kCanvasGroupCompatibleDisabledMessage; + } } return isProblematic; }