public virtual void NavigateBackToLastUniquePage(bool keepCache = false)
        {
            UIPage lastPage = null;

            do
            {
                lastPage = NavigationHistory.Pop();
            }while((NavigationHistory.Any() && lastPage == null) ||
                   (lastPage != null && lastPage == CurrentPage));

            if (lastPage != null)
            {
                lastPage.NavigateTo(keepCache);
            }
        }
        public T SpawnAndGetGameObject(T gameObjectToSpawn, bool useSpawnerTransformValues = true)
        {
            if (SpawnLimit > 0 && SpawnedGameObjects.Count >= SpawnLimit)
            {
                return(null);
            }

            T spawnedGameObject;

            if (PoolSize > 0 && _pooledGameObjects.Any())
            {
                spawnedGameObject = _pooledGameObjects.Pop();
                spawnedGameObject.gameObject.SetActive(true);
            }
            else
            {
                spawnedGameObject = Instantiate(gameObjectToSpawn);
            }

            ValidateSpawnParent();
            spawnedGameObject.transform.SetParent(SpawnParent);

            if (useSpawnerTransformValues)
            {
                gameObject.transform.CopyValuesTo(spawnedGameObject.transform, false);
            }
            else
            {
                gameObjectToSpawn.transform.CopyValuesTo(spawnedGameObject.transform, false);
                // spawnedGameObject.transform.ResetScaleAndRotation();
                spawnedGameObject.transform.localPosition = Vector3.zero; //transform.localPosition;
            }

            _spawnedGameObjects.Add(spawnedGameObject);
            OnSpawnEvent.Invoke(spawnedGameObject);
            return(spawnedGameObject);
        }