Решил прикрутить в игре превьюшку к сохранениям и собственно сами сохранение и загрузку. Сделал для этого структуру
Синтаксис:
Используется csharp
public struct SaveDataStruct
{
public DateTime SaveDate;
public string SaveName;
public byte[] SaveScreen;
public List<GameObject> SaveObjects;
}
{
public DateTime SaveDate;
public string SaveName;
public byte[] SaveScreen;
public List<GameObject> SaveObjects;
}
ну и само сохранение и загрузку я делаю так
Синтаксис:
Используется csharp
public List<GameObject> _saveObjectList;
public void SaveTest()
{
var filename = $"{Application.dataPath}/Saves/123.sav";
var data = new SaveDataStruct();
data.SaveName = "123";
data.SaveDate = DateTime.Now;
data.SaveScreen = _screenCamer.TrySaveCameraView(_camera);
data.SaveObjects = new List<GameObject>();
foreach (GameObject list in _saveObjectList)
{
data.SaveObjects.Add(list);
}
ES3.Save("prefabInstances", data, filename);
}
public SaveDataStruct LoadTest()
{
var filename = $"{Application.dataPath}/Saves/123.sav";
return ES3.Load("prefabInstances", filename, new SaveDataStruct());
}
public void SaveTest()
{
var filename = $"{Application.dataPath}/Saves/123.sav";
var data = new SaveDataStruct();
data.SaveName = "123";
data.SaveDate = DateTime.Now;
data.SaveScreen = _screenCamer.TrySaveCameraView(_camera);
data.SaveObjects = new List<GameObject>();
foreach (GameObject list in _saveObjectList)
{
data.SaveObjects.Add(list);
}
ES3.Save("prefabInstances", data, filename);
}
public SaveDataStruct LoadTest()
{
var filename = $"{Application.dataPath}/Saves/123.sav";
return ES3.Load("prefabInstances", filename, new SaveDataStruct());
}
сама превьюшка работает и данные сохраняются и загружаются. Но как вытащить GameObject? ease save пишет не сам объект а некий идентификатор для объект который она и сохраняет, соответственно при загрузки объекты при загрузки не меняют свои трансформы. На оффициальном сайте написано что объекты грузятся так
Синтаксис:
Используется csharp
public void SaveTest()
{
var filename = $"{Application.dataPath}/Saves/123.sav";
var data = new List<GameObject>();
foreach (GameObject list in _saveObjectList)
{
data.Add(list);
}
ES3.Save("prefabInstances", data, filename);
}
public void LoadTest()
{
var filename = $"{Application.dataPath}/Saves/123.sav";
ES3.Load("prefabInstances", filename, new List<GameObject>());
}
{
var filename = $"{Application.dataPath}/Saves/123.sav";
var data = new List<GameObject>();
foreach (GameObject list in _saveObjectList)
{
data.Add(list);
}
ES3.Save("prefabInstances", data, filename);
}
public void LoadTest()
{
var filename = $"{Application.dataPath}/Saves/123.sav";
ES3.Load("prefabInstances", filename, new List<GameObject>());
}
И это работает, то есть объекты меняют свою позиции. на сохранённые подгружаются хп со скрипта и т.д Отличия только в том что в первом случае я записываю и загружаю данные в структуру а во втором случае я все пишу напрямую в лист gameobject. Так как мне загрузить gameobject из своей структуры?