Как сохранить созданные объекты в игре в 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()]
}
→ Ссылка