Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Ошибки сериализации скрипта

Сериализация — это автоматический процесс преобразования структур данных или состояний объектов в формат, который Unity может сохранять и реконструировать позже. (Дополнительную информацию см. в документации по сериализации сценариев.)

В некоторых случаях сериализация скрипта может вызвать ошибки. Исправления некоторых из них перечислены ниже.

Вызов Unity Scripting API из конструктора или инициализаторов полей

Вызов Scripting API, например GameObject.Find внутри MonoBehaviour конструктор или инициализатор поля вызывает ошибку: «Find нельзя вызывать из конструктора MonoBehaviour (или инициализатора поля экземпляра), вместо этого вызовите его в Awake или Start».

Исправьте это, выполнив вызов Scripting API в MonoBehaviour.Start, а не в конструкторе.

Вызов Unity Scripting API во время десериализации

Вызов Scripting API, такого как GameObject.Find, из конструктора класса, отмеченного System.Serializable вызывает ошибку: «Find нельзя вызывать во время сериализации, вместо этого вызовите его из Awake или Start».

Чтобы исправить это, отредактируйте свой код, чтобы он не вызывал вызовы Scripting API в любых конструкторах для любых сериализованных объектов.

Потокобезопасный API скриптов Unity

На большую часть Scripting API распространяются перечисленные выше ограничения. Исключением являются только некоторые части API сценариев Unity, которые можно вызывать из любого места. Это:

  • Debug.Log

  • Mathf функции

  • Простые автономные структуры; например, математические структуры, такие как Vector3 и QuaternionСтандартный способ Unity для представления поворотов в виде данных. При написании кода, имеющего дело с поворотами, обычно следует использовать класс Quaternion и его методы. Подробнее
    См. в Словарь

Чтобы снизить риск ошибок во время сериализации, вызывайте только автономные методы API, которым не нужно получать или устанавливать данные в самом Unity. Вызывайте их только в том случае, если нет альтернативы.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3