ゲームに欠かせない機能の1つであるセーブ機能ですが、Unityでは様々なゲームのセーブ方法があります。
今回は、初心者におすすめのセーブ機能について紹介したいと思います。
【Unity】初心者向けゲームにセーブ機能を実装する方法3選!
①PlayerPrefs
とても有名なセーブ機能としてUnityEngineが提供している「PlayerPrefs」です。
メリット・デメリットそれぞれあるんですが、初心者が簡単に実装することが出来るためゲームのジャンルにもよりますが、シンプルなゲームには最適なセーブ機能です。
セーブだけでなく、ロードや削除等も手軽に行うことが出来ます。
ただし、RPG等主人公のあらゆるパラメータなど複数のデータを扱うのには不向きなので、規模の大きなゲームを開発するのであれば不向きです。
PlayerPrefsを採用する上でおすすめのゲームは、ステージ制のゲーム等ですね。シンプルなゲームではステージのシーンを保存しておけば良いのでおすすめです。
メリットとデメリットどちらにも端末内に保存される点を記述していますが、例えばWindowsの場合はデータの保存先がレジストリになっています。
これは、IT関係の知識がある方だと簡単に保存先にアクセス出来ることを意味しますね。ですので、個人開発で気にならないと感じている方におすすめですがこの仕様が気になる場合には別の方法を考える必要があるでしょう。
メリット
- 実装が簡単
- 初心者がゲーム開発で初めてのゲーム機能を学ぶ上で最適
- セーブデータは端末内に保存される
デメリット
- セーブ出来る型が少ない(int,float,Stringの3つ)
- 端末内に保存される(ユーザーからのアクセスが可能)
- 複数のセーブデータの取り扱いには向いていない
- 重い
- 暗号化不可
②Json形式に変換したセーブ・ロード方法
PlayerPrefsの代案としてよく登場する方法がこちらです。
Jsonは「JavaScript Object Notation」の略で、オブジェクトの表記方法という意味合いになります。
Unityにおけるセーブの実装ではセーブデータをJsonファイルに書き出したり、読み込むことでセーブ及びロードを実装することが出来ます。
JsonUtilityクラスを使用することで、セーブ及びロードの変換を行います。
メリット
- データの構造を表せる
- JsonUtilityクラスは実行速度が速い
- 様々なデータを取り扱う際に最適
デメリット
- 自由度がやや低い
- 制約がある(Dicitionary型だと使えなかったり、ルートがList型だと無視される)
- 変換出来ないものもエラーにはならず、意図しない挙動を起こす場合がある
③EasySave
こちらは、Unityアセットストアにある有料のアセットになってしまうわけですが私も購入して使っており、満足のいく結果となっているので紹介します。
EasySaveは、セーブ・ロード・暗号化等を行うことが出来るまさにゲーム開発には欠かせない機能が含まれているアセットです。
名前の通り簡単に使いこなすことが出来るのが特徴です。
EasySaveの使い方に関してはこちらの記事で紹介しています。
やや値が高いのがネックかもしれませんが、とても優良アセットとなっており定期的に50%オフのセールの対象となりますので、気になる場合は是非チェックしてみては如何でしょうか。
メリット
- 保存出来る型が豊富
- 実装が簡単なので初心者にもおすすめ
- セーブファイル全体を簡単に暗号化することが出来る
- 素早くセーブ機能を実装したい方におすすめ
デメリット
有料アセットとなっており、価格がやや高い。
まとめ
ゲーム開発にセーブ&ロード機能は切っても切れない関係にあります。
個人的には、実際に購入してEasySaveの魅力に気づいてしまった分EasySaveが一押しなわけですが、ゲームの内容次第で取捨選択してもらえればと思います。