public void GoToBack()
        {
            var previous      = Pop();
            var loadOperation = UnityEngine.SceneManagement.SceneManager.LoadSceneAsync(previous.sceneName, LoadSceneMode.Single);

            loadOperation.completed += (result2) =>
            {
                currentScene = previous;
            };
        }
        public void GoToChildScene(string sceneName, object param)
        {
            var child = new SceneHistoryData();

            child.sceneName = currentScene.sceneName;
            child.param     = param;
            currentScene.child.Add(child);
            var op = UnityEngine.SceneManagement.SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive);

            op.completed += (asyncOperation) =>
            {
            };
        }
        public void GoToScene(string sceneName, object param)
        {
            var prev = currentScene;
            var next = new SceneHistoryData();

            if (prev == null)
            {
                prev = new SceneHistoryData();
                var scene = UnityEngine.SceneManagement.SceneManager.GetActiveScene();
                prev.sceneName = scene.name;
            }
            next.sceneName = sceneName;
            next.param     = param;
            history.Add(prev);

            var op = UnityEngine.SceneManagement.SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Single);

            op.completed += (asyncOperation) =>
            {
                currentScene = next;
            };
        }