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();