From 5fd4494ea2d0f2bab508740ebe0d0be1abaf0136 Mon Sep 17 00:00:00 2001 From: "park.saerom" Date: Wed, 11 Aug 2021 15:29:28 +0900 Subject: [PATCH] Fix multiple nested prefab override issue. Related to #1273. --- .../Components/SkeletonRenderer.cs | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) 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 cf659c6c9..4493105f5 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderer.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderer.cs @@ -83,10 +83,25 @@ namespace Spine.Unity { if (meshFilter == null) meshFilter = gameObject.AddComponent(); } - if (fixPrefabOverrideViaMeshFilter) + if (fixPrefabOverrideViaMeshFilter) { + #if NEW_PREFAB_SYSTEM + if (UnityEditor.PrefabUtility.IsPartOfAnyPrefab(meshFilter)) { + var instanceRoot = UnityEditor.PrefabUtility.GetOutermostPrefabInstanceRoot(meshFilter); + var objectOverrides = UnityEditor.PrefabUtility.GetObjectOverrides(instanceRoot); + + foreach (UnityEditor.SceneManagement.ObjectOverride objectOverride in objectOverrides) { + if (objectOverride.instanceObject == meshFilter) { + objectOverride.Revert(UnityEditor.InteractionMode.AutomatedAction); + break; + } + } + } + #endif meshFilter.hideFlags = HideFlags.DontSaveInEditor; - else + } + else { meshFilter.hideFlags = HideFlags.None; + } } #endif /// Flip X and Y to use when the Skeleton is initialized. @@ -304,6 +319,11 @@ namespace Spine.Unity { } #endif + void OnEnable() { + if (!Application.isPlaying) + LateUpdate(); + } + void OnDisable () { if (clearStateOnDisable && valid) ClearState();