コガネブログ

平日更新を目標にUnityやC#、Visual Studioなどのゲーム開発アレコレを書いていきます

【Unity】ScriptableObject に PreferBinarySerialization 属性を適用すると読み書きのパフォーマンスが向上するらしい

概要

using UnityEngine;

[CreateAssetMenu]
[PreferBinarySerialization]
public class CharacterData : ScriptableObject
{
    public int    m_id  ;
    public string m_name;
}

ScriptableObject を継承したクラスに PreferBinarySerialization 属性を適用すると、
そのアセットはテキスト形式ではなくバイナリ形式で保存されるようになるため
読み書きのパフォーマンスが向上するようです

補足

  • PreferBinarySerialization 属性を適用する前に既に該当の ScriptableObject を生成済みの場合は、一度削除してから再度生成する必要がある?
    • 自分が開発中の Unity プロジェクトでは
      • エディタ拡張で生成している ScriptableObject は Import 時にバイナリになる
      • CreateAssetMenu 属性で生成した ScriptableObject は作り直さないとバイナリにならない (Reimport しても Reimport All してもバイナリにならず)
  • 自分が開発中の Unity プロジェクトでは、体感速度は特に変わらず
  • ビルド時の容量は Editor.log を見てみても特に変わらず

参考サイト様

https://docs.unity3d.com/ScriptReference/PreferBinarySerialization.html