Fix multiple nested prefab override issue.

Related to #1273.
This commit is contained in:
park.saerom 2021-08-11 15:29:28 +09:00
parent b8ec11f20e
commit 5fd4494ea2

View File

@ -83,10 +83,25 @@ namespace Spine.Unity {
if (meshFilter == null) if (meshFilter == null)
meshFilter = gameObject.AddComponent<MeshFilter>(); meshFilter = gameObject.AddComponent<MeshFilter>();
} }
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; meshFilter.hideFlags = HideFlags.DontSaveInEditor;
else }
else {
meshFilter.hideFlags = HideFlags.None; meshFilter.hideFlags = HideFlags.None;
}
} }
#endif #endif
/// <summary>Flip X and Y to use when the Skeleton is initialized.</summary> /// <summary>Flip X and Y to use when the Skeleton is initialized.</summary>
@ -304,6 +319,11 @@ namespace Spine.Unity {
} }
#endif #endif
void OnEnable() {
if (!Application.isPlaying)
LateUpdate();
}
void OnDisable () { void OnDisable () {
if (clearStateOnDisable && valid) if (clearStateOnDisable && valid)
ClearState(); ClearState();