ソースを参照

[unity] Added problematic component/material combination check for `Canvas Group Tint Black` when not using a `SkeletonGraphic Tint Black` shader. See #1812.

Harald Csaszar 4 年 前
コミット
23bce387af

+ 15 - 0
spine-unity/Assets/Spine/Runtime/spine-unity/Utility/MaterialChecks.cs

@@ -79,6 +79,12 @@ namespace Spine.Unity {
 			+ "This will lead to incorrect rendering on some devices.\n\n"
 			+ "Please change the assigned Material to e.g. 'SkeletonGraphicDefault' or change the used shader to one of the 'Spine/SkeletonGraphic *' shaders.\n\n"
 			+ "Note that 'Spine/SkeletonGraphic *' shall still be used when using URP.\n";
+		public static readonly string kNoSkeletonGraphicTintBlackMaterialMessage =
+			"\nWarning: Only enable 'Canvas Group Tint Black' when using a 'SkeletonGraphic Tint Black' shader!\n"
+			+ "This will lead to incorrect rendering.\n\nPlease\n"
+			+ "a) disable 'Canvas Group Tint Black' under 'Advanced' or\n"
+			+ "b) use a 'SkeletonGraphic Tint Black' Material if you need Tint Black on a CanvasGroup.\n";
+
 		public static readonly string kTintBlackMessage =
 			"\nWarning: 'Advanced - Tint Black' required when using any 'Tint Black' shader!\n\nPlease\n"
 			+ "a) enable 'Tint Black' at the SkeletonRenderer/SkeletonGraphic component under 'Advanced' or\n"
@@ -143,6 +149,10 @@ namespace Spine.Unity {
 					isProblematic = true;
 					errorMessage += kCanvasTintBlackMessage;
 				}
+				if (settings.canvasGroupTintBlack == true && !IsSkeletonGraphicTintBlackMaterial(material)) {
+					isProblematic = true;
+					errorMessage += kNoSkeletonGraphicTintBlackMaterialMessage;
+				}
 				if (settings.canvasGroupTintBlack == true && !IsCanvasGroupCompatible(material)) {
 					isProblematic = true;
 					errorMessage += kCanvasGroupCompatibleMessage;
@@ -261,6 +271,11 @@ namespace Spine.Unity {
 			return material.shader.name.Contains("Spine") && !material.shader.name.Contains("SkeletonGraphic");
 		}
 
+		static bool IsSkeletonGraphicTintBlackMaterial (Material material) {
+			return material.shader.name.Contains("Spine") && material.shader.name.Contains("SkeletonGraphic")
+				&& material.shader.name.Contains("Black");
+		}
+
 		static bool AreShadowsDisabled (Material material) {
 			return material.IsKeywordEnabled("_RECEIVE_SHADOWS_OFF");
 		}