Как сохранить созданные объекты в игре в Unity? Помогите пожалуйста уже пол года ломаю голову.!
Мне надо что-бы при спауни объектов(ну или по другому Prefab) они сохранялись при нажатие на кнопку или выхода из игры, и также появлялся при входе в игру или по нажатие кнопки. Помогите пожалуйста уже пол года ломаю голову.!!
Ответы (1 шт):
Автор решения: Максим Фисман
→ Ссылка
Простейший вариант - сохранять позиции всех объектов в массив. После чего при запуске игры спавнить их заново:
public struct myVector3 {
int x, int y, int z
}
[SerializeField] public List<myVector3> ObjectsPositions = new List<myVector3>();
Start () {
ObjectsPositions = Load();
foreach (var pos in ObjectsPositions) {
Instantiate(prefab, new Vector3(pos.x, pos.y, pos.z), Quaternion.identity);
}
}
OnApplicationQuit () {
foreach (var obj in [объекты, который нужно сохранять]) {
ObjectsPositions.Add(obj);
}
Save(ObjectsPositions);
}
Сериализовывать эту структуры вы можете как хотите. Например, в JSON или BinarySerialize. Свою структуру myVector3, поэтому что обычный Vector3 не сериализуется.
List<myVector3> Load () {
return [десериализуем оттуда, куда сериализуем в методе Save]
}
void Save (List<myVector3> positions) {
[сериализуем positions туда, откуда позже будем десериализовывать методом Load()]
}