コード例 #1
0
        IEnumerator LoadScene()
        {
            var scene = SceneManager.GetSceneByName(gameplayScene);

            if (scene.IsValid())
            {
                var o = SceneManager.UnloadSceneAsync(scene);
                yield return(o);
            }

            SceneManager.LoadScene(gameplayScene, LoadSceneMode.Additive);

            yield return(null); //wait until all GameObjects are initialized

            SceneManager.SetActiveScene(SceneManager.GetSceneByName(gameplayScene));

            var gameMap = FindObjectOfType <GameMap>();

            var storage = new GameSaveStorage();
            var slot    = storage.Read();

            gameMap.CreateMap(slot.mapData);
            gameMap.CreateEntites(slot.entities);

            yield return(null);

            TransitionToState(gameplayState);
        }
コード例 #2
0
        private void Update()
        {
            //Save game
            if (Input.GetKeyDown(KeyCode.F5))
            {
                var storage = new GameSaveStorage();
                var slot    = new GameSaveSlot();

                var entityDatabase = FindObjectOfType <EntityDatabase>();

                var mapData        = gameMap.GetMapData();
                var visibilityData = gameMap.GetVisibilityData();

                slot.mapData        = mapData;
                slot.visibilityData = visibilityData;

                slot.entities = new EntitiesData();
                var entities = entityDatabase.GetAllInstances();

                foreach (var entity in entities)
                {
                    var entityData = entity.GetData();

                    slot.entities.Add(entityData);
                }

                storage.Write(slot);

                var log = FindObjectOfType <UI.MessageLog>();
                log.AddMessage(new Actions.MessageActionResult("Game saved."));
            }

            //Load game
            //if (Input.GetKeyDown(KeyCode.F6))
            //{
            //    var storage = new GameSaveStorage();
            //    var slot = storage.Read();

            //    gameMap.CreateMap(slot.mapData);

            //    CreateEntites(slot.entities);
            //}
        }