По сути, ну как я думал все что происходит тут
BinaryFormatter
сохраняет тот объект, что ему передан.
Не подскажешь, как именно эти переменные передать в виде кода?)
Хранить данные для сохранения в отдельном объекте, передавать его BinaryFormatter
.
Как тут Using BinaryFormatter in Unity to Save and Load Game Data – Digital Ephemera
Еще такой вопрос, я понял как сохраняют GameObject, через Position обычно, но если есть функция Destroy(GameObject), и мне нужно сохранить именно уничтожение объекта, то есть ли смысл сохранять объект через его позицию?
Сохраняют то, что надо сохранить.
Тут, например, позиция, поворот, патроны, состояние и т.д. (состояние воина — стоит/идет/атакует/умер/…).
Так с уничтоженным объектом же нельзя работать ) Юнити ошибку выдаст если попытаться обратиться к свойствам уничтоженного объекта.
Ну точнее оно не совсем сразу уничтожает, но все равно уничтожение нужно только для случаев когда объект больше не нужен в программе.
Так что можно например
- Не уничтожать, а просто помечать как уничтоженный с помощью какого-нибудь своего отдельного свойства. Заодно можно сделать отображение уничтоженных/убитых объектов в игре.
или
- Создавать только сохраненные объекты при загрузке сохранения (ну или уничтожать все остальные).
То есть можно перевести в объект в bool и сохранять уже эту переменную?
Да, но смотря как сделано сохранение/загрузка.
Если хранить всё сохраняемое в отдельных своих классах (как в туториале выше), то должно быть не сложно. Сделать в классе два свойства (позиция и уничтожен ли), и при загрузке проверять.
Как я понял, мне позиция не нужна
Могу ли я создать переменную bool и в старте написать bool = true;
а в public void Buy
if(Destroy(GameObject)){bool = false};
И сохранять именно значение bool?
Что именно вы пытаетесь сохранить-то?
У меня уничтожаются объекты при нажатии кнопки, при новом запуске они остаются, мне же нужно чтобы их не было
какие объекты?
при запуске чего?
Эти объекты
при запуске сцены
а не должны?
Вот я и хочу сделать для этого сохранение, чтобы эти объекты не оставались
тогда зачем сохранять?
Могу в лс все расписать и скрины прислать, возможно так понятней будет
пришли
Можно в каждом экземпляре объекта сделать несколько панелей и отображать нужную, в зависимости от состояния объекта. Тогда ничего сохранять не надо и данные не будут теряться.
Криво, но должно работать.
наоборот должно быть
Так для не уничтоженных нужна.
То есть сохранять надо примерно такой объект:
public class MyObjectData
{
public Vector3 position;
public bool isDestroyed;
}