示例#1
0
        private void SendDataToScene(SingleLevelData levelData, bool restoringSaveFile, SubScene subScene = null)
        {
            SceneSettings  sceneSettings  = (subScene == null) ? KickStarter.sceneSettings : subScene.SceneSettings;
            LocalVariables localVariables = (subScene == null) ? KickStarter.localVariables : subScene.LocalVariables;

            KickStarter.actionListManager.LoadData(levelData.activeLists, subScene);

            UnloadCutsceneOnLoad(levelData.onLoadCutscene, sceneSettings);
            UnloadCutsceneOnStart(levelData.onStartCutscene, sceneSettings);
            UnloadNavMesh(levelData.navMesh, sceneSettings);
            UnloadPlayerStart(levelData.playerStart, sceneSettings);
            UnloadSortingMap(levelData.sortingMap, sceneSettings);
            UnloadTintMap(levelData.tintMap, sceneSettings);

            UnloadTransformData(levelData.allTransformData, subScene);

            foreach (ScriptData _scriptData in levelData.allScriptData)
            {
                if (_scriptData.data != null && _scriptData.data.Length > 0)
                {
                    // Get objects in active scene, and "DontDestroyOnLoad" scene
                    Remember[] saveObjects = Serializer.returnComponents <Remember> (_scriptData.objectID, (subScene != null) ? subScene.gameObject : null);

                    foreach (Remember saveObject in saveObjects)
                    {
                        if (saveObject != null)
                        {
                            if ((subScene != null && UnityVersionHandler.ObjectIsInScene(saveObject.gameObject, levelData.sceneNumber, restoringSaveFile))
                                ||
                                (subScene == null && UnityVersionHandler.ObjectIsInActiveScene(saveObject.gameObject, restoringSaveFile)))
                            {
                                // May have more than one Remember script on the same object, so check all
                                Remember[] saveScripts = saveObject.gameObject.GetComponents <Remember>();
                                foreach (Remember saveScript in saveScripts)
                                {
                                    saveScript.LoadData(_scriptData.data, restoringSaveFile);
                                }
                            }
                        }
                    }
                }
            }

            //UnloadVariablesData (levelData.localVariablesData, localVariables);
            localVariables.localVars = SaveSystem.UnloadVariablesData(levelData.localVariablesData, localVariables.localVars);
        }