Сериализация и десериализация в Unity
Все ресурсы, а также сцены и объекты вашего проекта хранятся на диске. Когда вы редактируете игру, эти объекты загружаются в память, после чего сохраняются снова на диске посредством специальной системы сериализации, которая предусмотрена в Unity. Во время тестовых прогонов игры, находящиеся в памяти объекты и сцены загружаются благодаря той же системе сериализации. Данная система соотносит ресурсы, которые находятся в скомпилированном пакете, с выгруженными и загруженными объектами сцены в памяти.
Итак, в движке Unity действует поток сериализации/десериализации. Он загружает в память ресурсы, которые расположены на диске, причем, если мы говорим идет о проекте, то речь идет о редактировании либо тестовом прогоне игры, если о самой игре, то речь идет о ресурсах, используемых при загрузке сцены. Так вот, существующая в Unity система отвечает за сохранение состояния предварительно отредактированных объектов и компонентов, то есть имеется в виду обратное сохранение в соответствующих сценах и шаблонных экземпляров.
Если говорить простыми словами, система сериализации -- это ключевой элемент работы с редактором Unity. Для того, чтобы MonoBehavior смог принять ввод во время конструировании сцены и в ходе ее последующей инициализации, данные поля должны быть сериализованы.
В большинстве базовых типов Unity, к примеру, в GameObject и MonoBehavior, ресурсы поддаются сериализации, то есть они способны получать исходные значения во время своего создания непосредственно из Unity-редактора. А публичные поля в MonoBehavior сериализуются по дефлоту (когда они относятся к сериализуемому типу), в то время как приватные поля для этой цели следует сначала пометить атрибутом
По материалам https://blog.eyas.sh/2020/10/unity-for-engineers-pt1-basic-concepts/.