Forum rules - please read before posting.

Get Saved Scene Index

Hi,
I want to create preload function in main menu for last saved scene.
I try to access to saved file current scene index but some how I always get -1.
Am I doing something wrong?


private int GetSavedScene() { var saveFile = KickStarter.saveSystem.GetSaveFile(1); var playerID = saveFile.profileID; var playerData = KickStarter.saveSystem.GetPlayerData(playerID); return playerData.currentScene; }

Comments

  • After a couple test I realize that

    var playerID = saveFile.profileID;
    

    line is wrong now I try to get playerID from MainData but how can I access to playerID from SaveFile.

  • edited January 2022

    Okay I got it, just not forget to use System.IO;

    using System.IO;
    
    private int GetSavedScene()
        {
            var saveFile = KickStarter.saveSystem.GetSaveFile(1);
    
            StreamReader reader = new StreamReader(saveFile.fileName);
            var serializedData = reader.ReadToEnd();
    
            var sceneData = SaveSystem.ExtractSceneData(serializedData);
            var scene = sceneData[0].sceneNumber;
    
            return scene;
        }
    
  • edited January 2022

    The SceneData array only contains data related to each scene - it's not representative of which scene is actually open.

    Instead, you have to get the playerID and iterate through the PlayerData array to find a match.

    This function will let you get the saved scene index:

    private int GetSavedScene (int saveID)
    {
        SaveFile saveFile = KickStarter.saveSystem.GetSaveFile (saveID);
        string fileData = SaveSystem.SaveFileHandler.Load (saveFile, false);
    
        SaveData saveData = SaveSystem.ExtractMainData (fileData);
    
        int playerID = saveData.mainData.currentPlayerID;
    
        foreach (PlayerData playerData in saveData.playerData)
        {
            if (playerData.playerID == playerID)
            {
                return playerData.currentScene;
            }
        }
    
        Debug.LogWarning ("No player data found for ID " + playerID);
        return 0;
    }
    
  • Thank you, everything works great.
Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Welcome to the official forum for Adventure Creator.