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