Преглед изворни кода

[unity] Setting SkeletonGraphic CanvasRenderer.cullTransparentMesh to false at new instances to avoid `Add` blend mode problems.

Harald Csaszar пре 3 година
родитељ
комит
156ef80a9c

+ 9 - 0
spine-unity/Assets/Spine/Editor/spine-unity/Editor/Components/SkeletonGraphicInspector.cs

@@ -31,6 +31,10 @@
 #define NEW_PREFAB_SYSTEM
 #endif
 
+#if UNITY_2018_2_OR_NEWER
+#define HAS_CULL_TRANSPARENT_MESH
+#endif
+
 using UnityEditor;
 using UnityEngine;
 
@@ -469,6 +473,11 @@ namespace Spine.Unity.Editor {
 			graphic.additiveMaterial = SkeletonGraphicInspector.DefaultSkeletonGraphicAdditiveMaterial;
 			graphic.multiplyMaterial = SkeletonGraphicInspector.DefaultSkeletonGraphicMultiplyMaterial;
 			graphic.screenMaterial = SkeletonGraphicInspector.DefaultSkeletonGraphicScreenMaterial;
+
+#if HAS_CULL_TRANSPARENT_MESH
+			var canvasRenderer = go.GetComponent<CanvasRenderer>();
+			canvasRenderer.cullTransparentMesh = false;
+#endif
 			return go;
 		}
 

+ 9 - 5
spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonGraphic.cs

@@ -169,13 +169,17 @@ namespace Spine.Unity {
 		/// <summary>Add a SkeletonGraphic component to a GameObject.</summary>
 		/// <param name="material">Material for the canvas renderer to use. Usually, the default SkeletonGraphic material will work.</param>
 		public static SkeletonGraphic AddSkeletonGraphicComponent (GameObject gameObject, SkeletonDataAsset skeletonDataAsset, Material material) {
-			var c = gameObject.AddComponent<SkeletonGraphic>();
+			var skeletonGraphic = gameObject.AddComponent<SkeletonGraphic>();
 			if (skeletonDataAsset != null) {
-				c.material = material;
-				c.skeletonDataAsset = skeletonDataAsset;
-				c.Initialize(false);
+				skeletonGraphic.material = material;
+				skeletonGraphic.skeletonDataAsset = skeletonDataAsset;
+				skeletonGraphic.Initialize(false);
 			}
-			return c;
+#if HAS_CULL_TRANSPARENT_MESH
+			var canvasRenderer = gameObject.GetComponent<CanvasRenderer>();
+			if (canvasRenderer) canvasRenderer.cullTransparentMesh = false;
+#endif
+			return skeletonGraphic;
 		}
 		#endregion