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

This commit is contained in:
Harald Csaszar 2022-04-08 11:16:42 +02:00
parent 754365ef9b
commit 156ef80a9c
2 changed files with 18 additions and 5 deletions

View File

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

View File

@ -169,13 +169,17 @@ namespace Spine.Unity {
/// <summary>Add a SkeletonGraphic component to a GameObject.</summary> /// <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> /// <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) { public static SkeletonGraphic AddSkeletonGraphicComponent (GameObject gameObject, SkeletonDataAsset skeletonDataAsset, Material material) {
var c = gameObject.AddComponent<SkeletonGraphic>(); var skeletonGraphic = gameObject.AddComponent<SkeletonGraphic>();
if (skeletonDataAsset != null) { if (skeletonDataAsset != null) {
c.material = material; skeletonGraphic.material = material;
c.skeletonDataAsset = skeletonDataAsset; skeletonGraphic.skeletonDataAsset = skeletonDataAsset;
c.Initialize(false); skeletonGraphic.Initialize(false);
} }
return c; #if HAS_CULL_TRANSPARENT_MESH
var canvasRenderer = gameObject.GetComponent<CanvasRenderer>();
if (canvasRenderer) canvasRenderer.cullTransparentMesh = false;
#endif
return skeletonGraphic;
} }
#endregion #endregion