Решил попробовать разобраться с системой сохранений в unity. Для хранения данных выбрал воспользоваться сохранением в файлы в виде бинарного кода (с помощью BinaryFormatter()). Начал искать примеры реализации подобного в сети. В связи с этим у меня накопилось несколько вопросов:
1. Директива (?) [SerializeField] нужна для обеспечения возможности сериализации приватных полей класса (при этом поля с типом доступа public сразу доступны для сериализации), а [System.Serializable] для того, чтобы мы могли сериализовать экземпляры целого класса (в т.ч. с его приватными полями). Верно ли я понимаю этот момент? И если нет, то в чем ошибаюсь?
2. Можем ли мы как-то сериализовать сразу несколько полей/экземпляров класса и записать их в один файл, не прибегая к оберткам в виде массивов и т.п., а также к прочим хитростям?
3. Что происходит при сериализации статических классов? Возможно ли это вообще?
Кроме этих вопросов есть ещё один, не связанный с указанной темой. На одном из сайтов я наткнулся на такой фрагмент кода, который оказался непонятным для меня (как уже было сказано выше, я новичок в C#):
Синтаксис:
Используется csharp
public class Game {
public static Game current;
...
}
public static Game current;
...
}
Здесь в переменную current не было записано ничего, однако позже к ней обращались как к, по всей видимости, ссылке на экземпляр класса Game. Как это работает?
Заранее спасибо.