はじめに
Unityでセーブ機能を実装する方法はいくつかありますが、初心者向けの方法としては、
・UnityEngineが提供しているPlayerprefsを利用する
というのがあります。ただし、セーブできる型が限られており、本格的にゲーム制作をするとなると、あまり実用的ではありません。
それに、一つの変数を保存するためにコードをいちいち書かないといけないのが大変です。
Playerprefsはできれば使いたくない!
簡単にできる他の方法ないかな?
Easy Saveというアセットを使うとコードを書かずにセーブ、ロードすることができるようになるので非常に手間が省けます。
Easy Saveとは
簡単にセーブ・ロード機能の実装ができ、暗号化まで行ってくれるアセットです。
セーブできる型は、int、float、string、boolといった基本的なものから、GameObject、配列、Text、Transformなど様々なものが対応されています。
詳しくはこちらをご覧ください。
特徴
- コードを書かずにセーブする対象を指定できる
- オートセーブ対応
- 暗号化対応
もちろん、Playerprefsのようにコードを書いて指定したタイミングでセーブしたり、セーブ対象変数をセーブすることもできます。
セーブ・ロード方法
今回は、一切コードを書かずにセーブ・ロードを実装します。
まずは、Window > Package ManagerからEasy Saveをインストールしましょう。
Tools > Easy Save 3 > Auto Save をクリックし、Easy Save のウィンドウを表示させます。
表示されたウィンドウのEnable Auto Save for this sceneをクリックします。
すると、Hierarchy同様の表示が出てきます。
ウィンドウ上部のSave Event、Load Eventで、セーブ・ロードのタイミングを設定できます。
デフォルトでは、アプリが停止された場合に自動的にセーブし、Awake時にロードするようになっています。
セーブしたいものを選択します。
今回は、試験用にボタンを押すと1増える画面を用意しました。以下の3点をセーブしてみます。
- GameObject(ボタン)のアクティブ状態
- 数字テキスト
- スクリプト内、変数(int型)
セーブするものにはチェックを入れます。
チェックを入れるだけだから簡単!
実行
試験用にボタンを押すと1増える画面を用意しました。
ボタンを押して数字を増やしてから、停止して再起動すると、前回のデータがロードされています。
ボタンのアクティブ状態もセーブされ、2回目の起動では非表示にされています。
Unityエディタでセーブされたデータの場所
セーブデータの保存場所はTools > Easy Save 3 > Open Persistent Data Path から開くことができます。
また、エディタ上でセーブされた内容は、Tools > Easy Save 3 > Clear Persistent Data Pathから消去できます。
Tools > Easy Save 3 > Settings のDirectory から保存先を指定することもできます。
おわりに
Easy Save を使うことで、コードを書かずに簡単にオートセーブの実装ができました。
コードを書けばさらに、次のことができるようになります。今後の記事で解説したいと思います。
・好きなタイミングでのセーブ&ロード
・セーブファイルを分ける