- Home /
How can i save an entire scene when a checkpoint is hit
I'm currently trying to save the contents of a scene, so that when the player dies, the scene reloads, and everything returns to the way they used to be the moment the checkpoint was hit
I can make it work for the player position, by saving the position in a static class, and when he enters a checkpoint trigger, i change the position to this checkpoint, like so:
public Transform spawnPoint;
private void OnTriggerEnter(Collider other)
{
if(other.gameObject.tag == "Player")
{
Debug.Log("Set Spawn point to here");
CheckpointData.checkpointControl.playerPos = spawnPoint.position;
}
}
Then, on the start function of my player code, i do
this.transform.position = CheckpointData.checkpointControl.playerPos;
The problem here lies in other objects, such as moving platforms, that can be activated and deactivated. They do have a "isActive" variable, but i'm unsure as to how i would go about saving that variable when the player hits a checkpoint, considering there are a lot of objects on the scene and all of them can have different variables (E.g.: a moving platform can be active, while another can be inactive at the same time) which means i can't just save the "IsActive" variable on my CheckpointData class, because every object has a different "isActive" value
any pointers in the right direction would be really helpful
Answer by SeanKaat · Jan 27, 2019 at 02:31 AM
I would create a struct containing all the variables that you would want to set at a checkpoint for each object. Then perform a check for each object with FindObjectsOfType when the player reaches a checkpoint and save each one into your checkpoint data. Once the player dies and re-spawns, instantiate each of those objects with the structs data.
Your answer
Follow this Question
Related Questions
Keeping reference after scene reload 2 Answers
Reloading current scene make game laggy? 0 Answers
Scene loading delay after upgrade 4.6 to 5. 0 Answers
How Do I Link Different Scenes? 4 Answers