Описание
Предпочитайте производный тип ScriptableObject для использования двоичной сериализации независимо от режима сериализации ресурсов проекта.
Это полезно для пользовательских типов объектов, содержащих большие объемы данных. Хранение их всегда в двоичном виде может повысить производительность чтения/записи, а также создать более компактные представления на диске. Основным недостатком является то, что двоичные файлы активов больше не читаются человеком, и вы больше не можете объединять их в своем программном обеспечении для контроля версий.
Сериализация ресурсов в Unity всегда использует согласованный режим сериализации для всего файла. В результате, когда файл ресурсов содержит несколько ресурсов, не всегда возможно учесть желание принудительно использовать двоичную сериализацию для определенного ресурса. Режим сериализации файла актива контролируется основным активом по этому пути. В результате необходимо соблюдать осторожность при составлении сложных активов с помощью AssetDabase.CreateAsset и AssetDatabase.AddObjectToAsset, чтобы убедиться, что основным активом является объект с этим установленным атрибутом. Файлы сцен всегда следуют режиму сериализации ресурсов, настроенному в проекте, поэтому PreferBinarySerialization всегда игнорируется для ресурсов, встроенных в сцены.
Атрибут можно применять только к классам, производным от ScriptableObject, он будет игнорироваться для всех остальных типов.
using UnityEngine;
// Custom asset type that prefers binary serialization.
//
// Create a new asset file by going to "Asset/Create/Custom Data".
// If you open this new asset in a text editor, you can see how it
// is not affected by changing the project asset serialization mode.
//
[CreateAssetMenu]
[PreferBinarySerialization]
public class CustomData : ScriptableObject
{
public float[] lotsOfFloatData = new[] { 1f, 2f, 3f };
public byte[] lotsOfByteData = new byte[] { 4, 5, 6 };
}