[unity] Disable playmode state change reload.

This commit is contained in:
pharan 2018-09-24 00:04:57 +08:00
parent b190af431c
commit 7da81ecad1

View File

@ -206,15 +206,15 @@ namespace Spine.Unity.Editor {
// Data Refresh Edit Mode.
// This prevents deserialized SkeletonData from persisting from play mode to edit mode.
#if UNITY_2017_2_OR_NEWER
EditorApplication.playModeStateChanged -= DataReloadHandler.OnPlaymodeStateChanged;
EditorApplication.playModeStateChanged += DataReloadHandler.OnPlaymodeStateChanged;
DataReloadHandler.OnPlaymodeStateChanged(PlayModeStateChange.EnteredEditMode);
#else
EditorApplication.playmodeStateChanged -= DataReloadHandler.OnPlaymodeStateChanged;
EditorApplication.playmodeStateChanged += DataReloadHandler.OnPlaymodeStateChanged;
DataReloadHandler.OnPlaymodeStateChanged();
#endif
//#if UNITY_2017_2_OR_NEWER
// EditorApplication.playModeStateChanged -= DataReloadHandler.OnPlaymodeStateChanged;
// EditorApplication.playModeStateChanged += DataReloadHandler.OnPlaymodeStateChanged;
// DataReloadHandler.OnPlaymodeStateChanged(PlayModeStateChange.EnteredEditMode);
//#else
// EditorApplication.playmodeStateChanged -= DataReloadHandler.OnPlaymodeStateChanged;
// EditorApplication.playmodeStateChanged += DataReloadHandler.OnPlaymodeStateChanged;
// DataReloadHandler.OnPlaymodeStateChanged();
//#endif
initialized = true;
}
@ -351,10 +351,15 @@ namespace Spine.Unity.Editor {
#else
internal static void OnPlaymodeStateChanged () {
#endif
ReloadAllActiveSkeletons();
ReloadAllActiveSkeletonsEditMode();
}
static void ReloadAllActiveSkeletons () {
static void ReloadAllActiveSkeletonsEditMode () {
if (EditorApplication.isPaused) return;
if (EditorApplication.isPlaying) return;
if (EditorApplication.isCompiling) return;
if (EditorApplication.isPlayingOrWillChangePlaymode) return;
var skeletonDataAssetsToReload = new HashSet<SkeletonDataAsset>();
var activeSkeletonRenderers = GameObject.FindObjectsOfType<SkeletonRenderer>();
@ -369,11 +374,18 @@ namespace Spine.Unity.Editor {
if (skeletonDataAsset != null) skeletonDataAssetsToReload.Add(skeletonDataAsset);
}
foreach (var sda in skeletonDataAssetsToReload)
foreach (var sda in skeletonDataAssetsToReload) {
sda.Clear();
sda.GetSkeletonData(true);
}
foreach (var sr in activeSkeletonRenderers) sr.Initialize(true);
foreach (var sg in activeSkeletonGraphics) sg.Initialize(true);
foreach (var sr in activeSkeletonRenderers) {
sr.Initialize(true);
}
foreach (var sg in activeSkeletonGraphics) {
sg.Initialize(true);
}
}
}