I've been using easy save 3 in project to save load gameobject (with children) and it works fine in editor but not in build. Also the gameobjects I've been saving and loading are a mix of custom made pieces and some unity default shapes (Cube). In the build only the unity default shapes are being loaded and not the custom made pieces. I've enabled the read/write on their model.
I also read a similar post on this forum and it said to use:
1. Persistent data path instead of data path to save/load.
2. While saving/loading in code pass the persistent data path as a parameter in ES3.Save() and ES3.Load() functions.
I changed my settings and code accordingly and it still isn't working. The code of save system is below. Thanks in advance!
Code: Select all
using System.Collections.Generic;
using UnityEngine;
public class TrackSaveSystem : MonoBehaviour
{
[SerializeField]List<string> savedTrackKeys = new List<string>();
string path;
private void Awake()
{
path = Application.persistentDataPath + "/SaveFile.es3";
}
public void SaveTrack(GameObject trackGO, string trackKey)
{
ES3.Save(trackKey, trackGO, path);
if(trackKey != References.savedTestTrackKey)
UpdateSavedTrackKeysList(trackKey, true);
}
public GameObject LoadTrack(Transform trackStartPOS, string trackKey)
{
GameObject LoadedTrackParent;
LoadedTrackParent = ES3.Load<GameObject>(trackKey, path);
LoadedTrackParent.transform.parent = trackStartPOS.transform;
return LoadedTrackParent;
}
public void DeleteTrack(string trackKey)
{
ES3.DeleteKey(trackKey);
UpdateSavedTrackKeysList(trackKey, false);
}
public List<string> ListOfAllSavedTracks()
{
if (ES3.KeyExists(References.savedTrackKeysKey))
return (List<string>)ES3.Load(References.savedTrackKeysKey,path);
else
return null;
}
public void ChangeES3TrackGO(GameObject trackGO, string trackKey)
{
ES3.Save(trackKey, trackGO,path);
}
void UpdateSavedTrackKeysList(string trackKey, bool addingTrack)
{
if(ES3.KeyExists(References.savedTrackKeysKey, path))
savedTrackKeys = (List<string>)ES3.Load(References.savedTrackKeysKey, path);
if (addingTrack)
savedTrackKeys.Add(trackKey);
else
savedTrackKeys.Remove(trackKey);
ES3.Save(References.savedTrackKeysKey, savedTrackKeys, path);
}
}