Unity でのデータ管理方法
Unity でデータを管理する方法はいくつかあります。
主な方法は以下になります。
- Variables
- EditorPrefs
- PlayerPrefs
- ScriptableObject
- LocalDataBase
- ServerDataBase
Variables(変数)
これはアプリの実行中に変動する可変な値を格納しておくためのものです。 メモリー上に展開されますので、アプリを終了した時点で値は消えてしまいます。
EditorPrefs(エディター設定)
これはファイルを読み書きします。 プロジェクトをまたいで設定を共有したい場合に使用します。
PlayerPrefs(プレイヤー設定)
これもファイルを読み書きします。 ゲーム設定の保存に使用するのが正しいですが、ゲームデータの保存(セーブデータ)に使用することもできます。
ScriptableObject
これはアプリの固定データの扱いに向いています。 スクリプトクラス内のフィールドに値を設定する場合と比べてメモリーの使用量が少なくなります。
LocalDataBase
これはアプリの固定データの扱いに向いていますが、セーブデータにも使用できます。 Unity の標準機能ではないため、独自で機能を実装する必要があります。
ServerDataBase
これは LocalDataBase と同様に何にでも使用できます。 Unity の標準機能ではないため、独自で機能を実装する必要があります。 また、アプリ実行中には基本的にはインターネットに接続している必要があります。
さて、まとめとしてどのデータ管理方法が正しいかですが
これは開発するアプリによって変わってきます。
考慮すべきポイントは、処理速度、処理負荷、メモリー使用量、データ記録、データ改ざんといったものになります。
弊社では、データの扱いには、それに特化したDBとSQLを使用するのがベストだと考えているのと、 セキュリティーを考慮し、主に LocalDataBase と ServerDataBase を組み合わせて使用しています。
どちらも Unity の標準機能ではないため、実装には独自のノウハウが効いてきますね。