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