无论项目资源序列化模式如何,都首选使用二进制序列化派生的 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 }; }