diff --git a/Assets/UnityScreenNavigator/Runtime/Core/Modal/ModalContainer.cs b/Assets/UnityScreenNavigator/Runtime/Core/Modal/ModalContainer.cs index 225a8050..54ec8a9c 100644 --- a/Assets/UnityScreenNavigator/Runtime/Core/Modal/ModalContainer.cs +++ b/Assets/UnityScreenNavigator/Runtime/Core/Modal/ModalContainer.cs @@ -14,7 +14,11 @@ namespace UnityScreenNavigator.Runtime.Core.Modal [RequireComponent(typeof(RectMask2D))] public sealed class ModalContainer : MonoBehaviour, IScreenContainer { +#if UNITY_6000_5_OR_NEWER + private static readonly Dictionary InstanceCacheByTransform = new(); +#else private static readonly Dictionary InstanceCacheByTransform = new(); +#endif private static readonly Dictionary InstanceCacheByName = new(); @@ -101,7 +105,11 @@ private void OnDestroy() _orderedModalIds.Clear(); InstanceCacheByName.Remove(_name); +#if UNITY_6000_5_OR_NEWER + var keysToRemove = new List(); +#else var keysToRemove = new List(); +#endif foreach (var cache in InstanceCacheByTransform) if (Equals(cache.Value)) keysToRemove.Add(cache.Key); @@ -141,7 +149,11 @@ public static ModalContainer Of(Transform transform, bool useCache = true) /// public static ModalContainer Of(RectTransform rectTransform, bool useCache = true) { +#if UNITY_6000_5_OR_NEWER + var id = rectTransform.GetEntityId(); +#else var id = rectTransform.GetInstanceID(); +#endif if (useCache && InstanceCacheByTransform.TryGetValue(id, out var container)) return container; container = rectTransform.GetComponentInParent(); @@ -462,4 +474,4 @@ Action> onLoaded onLoaded?.Invoke(modal, assetLoadHandle); } } -} \ No newline at end of file +} diff --git a/Assets/UnityScreenNavigator/Runtime/Core/Page/PageContainer.cs b/Assets/UnityScreenNavigator/Runtime/Core/Page/PageContainer.cs index 700d86a2..7bb32892 100644 --- a/Assets/UnityScreenNavigator/Runtime/Core/Page/PageContainer.cs +++ b/Assets/UnityScreenNavigator/Runtime/Core/Page/PageContainer.cs @@ -14,7 +14,11 @@ namespace UnityScreenNavigator.Runtime.Core.Page [RequireComponent(typeof(RectMask2D))] public sealed class PageContainer : MonoBehaviour, IScreenContainer { +#if UNITY_6000_5_OR_NEWER + private static readonly Dictionary InstanceCacheByTransform = new(); +#else private static readonly Dictionary InstanceCacheByTransform = new(); +#endif private static readonly Dictionary InstanceCacheByName = new(); @@ -90,7 +94,11 @@ private void OnDestroy() _orderedPageIds.Clear(); InstanceCacheByName.Remove(_name); +#if UNITY_6000_5_OR_NEWER + var keysToRemove = new List(); +#else var keysToRemove = new List(); +#endif foreach (var cache in InstanceCacheByTransform) if (Equals(cache.Value)) keysToRemove.Add(cache.Key); @@ -130,7 +138,11 @@ public static PageContainer Of(Transform transform, bool useCache = true) /// public static PageContainer Of(RectTransform rectTransform, bool useCache = true) { +#if UNITY_6000_5_OR_NEWER + var id = rectTransform.GetEntityId(); +#else var id = rectTransform.GetInstanceID(); +#endif if (useCache && InstanceCacheByTransform.TryGetValue(id, out var container)) return container; container = rectTransform.GetComponentInParent(); @@ -483,4 +495,4 @@ Action> onLoaded onLoaded?.Invoke(page, assetLoadHandle); } } -} \ No newline at end of file +} diff --git a/Assets/UnityScreenNavigator/Runtime/Core/Sheet/SheetContainer.cs b/Assets/UnityScreenNavigator/Runtime/Core/Sheet/SheetContainer.cs index e3f0ba55..699cd18e 100644 --- a/Assets/UnityScreenNavigator/Runtime/Core/Sheet/SheetContainer.cs +++ b/Assets/UnityScreenNavigator/Runtime/Core/Sheet/SheetContainer.cs @@ -14,8 +14,13 @@ namespace UnityScreenNavigator.Runtime.Core.Sheet [RequireComponent(typeof(RectMask2D))] public sealed class SheetContainer : MonoBehaviour, IScreenContainer { +#if UNITY_6000_5_OR_NEWER + private static readonly Dictionary InstanceCacheByTransform = + new Dictionary(); +#else private static readonly Dictionary InstanceCacheByTransform = new Dictionary(); +#endif private static readonly Dictionary InstanceCacheByName = new Dictionary(); @@ -94,7 +99,11 @@ private void OnDestroy() UnregisterAll(); InstanceCacheByName.Remove(_name); +#if UNITY_6000_5_OR_NEWER + var keysToRemove = new List(); +#else var keysToRemove = new List(); +#endif foreach (var cache in InstanceCacheByTransform) if (Equals(cache.Value)) keysToRemove.Add(cache.Key); @@ -123,7 +132,11 @@ public static SheetContainer Of(Transform transform, bool useCache = true) /// public static SheetContainer Of(RectTransform rectTransform, bool useCache = true) { +#if UNITY_6000_5_OR_NEWER + var hashCode = rectTransform.GetEntityId(); +#else var hashCode = rectTransform.GetInstanceID(); +#endif if (useCache && InstanceCacheByTransform.TryGetValue(hashCode, out var container)) return container;