/**
         * <summary>Loads data used by this script from a PlayerData class.</summary>
         * <param name = "playerData">The PlayerData to load from.</param>
         * <param name = "loadSubScenes">If True, then sub-scenes will be loaded</param>
         */
        public void LoadPlayerData(PlayerData playerData, bool loadSubScenes = true)
        {
            foreach (SubScene subScene in subScenes)
            {
                SceneInfo sceneInfo = GetSceneInfo(subScene.SceneIndex);
                if (sceneInfo != null)
                {
                    sceneInfo.Close();
                }
            }
            subScenes.Clear();

            if (loadSubScenes && playerData.openSubScenes != null && playerData.openSubScenes.Length > 0)
            {
                string[] subSceneArray = playerData.openSubScenes.Split(SaveSystem.pipe[0]);
                foreach (string chunk in subSceneArray)
                {
                    string[] chunkData = chunk.Split(SaveSystem.colon[0]);

                    int _index  = chunkData.Length - 1;                    // For backwards-compat
                    int _number = 0;
                    if (_index >= 0 && int.TryParse(chunkData[_index], out _number))
                    {
                        AddSubScene(_number);
                    }
                }
            }
        }
        protected IEnumerator CloseScene(int sceneIndex)
        {
            yield return(new WaitForEndOfFrame());

            SceneInfo sceneInfo = GetSceneInfo(sceneIndex);

            if (sceneInfo != null)
            {
                sceneInfo.Close(true);
            }
        }