PreferBinarySerialization

class in UnityEngine

Switch to Manual

Description

使 ScriptableObject 派生类型优先使用二进制序列化(不考虑项目的资源序列化模式)。

对于包含大量数据的自定义资源类型,这非常有用。始终使它们存储为二进制可以提高读/写性能,以及在磁盘上生成更紧凑的表示。主要缺点是二进制资源文件不再人工可读,并且无法在版本控制软件中将其合并。

Asset serialization in Unity always uses a consistent serialization mode throughout the entirety of each file. As a result, when an asset file contains multiple assets, it might not always be possible to respect the desire to force a specific asset to use binary serialization. The serialization mode of an asset file is controlled by the main asset at that path. As a result, care has to be taken when composing complex assets using AssetDabase.CreateAsset and AssetDatabase.AddObjectToAsset to ensure that the main asset is the object with this attribute set. Scene files always follow the asset serialization mode configured in the project, thus PreferBinarySerialization is always ignored for assets embedded in Scenes.

该属性只能应用于 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 }; }