This is the script
Code: Select all
[System.Serializable]
public class CutsceneData
{
//[SerializeField] public TimelineAsset timelineAsset;
public bool hasBeenPlayed;
public void SetHasBeenPlayedToTrue()
{
hasBeenPlayed = true;
}
}
[CreateAssetMenu(fileName = "CutsceneSO", menuName = "ScriptableObjects/Cinematics", order = 1)]
public class CutsceneSO : ScriptableObject
{
[SerializeField] private CutsceneData cutsceneData;
public CutsceneData CutsceneData => cutsceneData;
private void Awake()
{
hideFlags = HideFlags.DontUnloadUnusedAsset;
}
}
Code: Select all
private void Save()
{
for (int i = 0; i < scenesData.Count; i++)
{
foreach (Level level in scenesData[i].levels)
{
ES3.Save<Level>(level.sceneName, level);
ES3.Save<TimeRankingSO>(level.rankingSO.name + " " + TIME_TRIAL_KEY, level.rankingSO);
ES3.Save<ScoreRankingSO>(level.scoreRankingSO.name + " " + SCORE_RANKING_KEY, level.scoreRankingSO);
for (int j = 0; j < level.cinematicInfo.Count; j++)
{
string cutsceneKey = level.cinematicInfo[j].name;
ES3.Save<CutsceneSO>(cutsceneKey, level.cinematicInfo[j]);
}
}
}
Debug.Log("Saved");
}
Code: Select all
private void Load()
{
for (int i = 0; i < scenesData.Count; i++)
{
foreach (Level level in scenesData[i].levels)
{
Level loadedObject = ES3.Load<Level>(level.sceneName);
TimeRankingSO timeRankingSO = loadedObject.rankingSO;
ScoreRankingSO scoreRank = loadedObject.scoreRankingSO;
timeRankingSO = ES3.Load<TimeRankingSO>(loadedObject.rankingSO.name + " " + TIME_TRIAL_KEY);
scoreRank = ES3.Load<ScoreRankingSO>(loadedObject.scoreRankingSO.name + " " + SCORE_RANKING_KEY);
for (int j = 0; j < level.cinematicInfo.Count; j++)
{
string cutsceneKey = level.cinematicInfo[j].name;
CutsceneSO loadedCutscene = ES3.Load<CutsceneSO>(cutsceneKey);
level.cinematicInfo[j] = loadedCutscene;
}
}
}
}