unityゲームのセーブ・ロードシステムの作り
※本記事には広告を含みます
スマホゲームプログラミング入門講座 Unityで放置インフレ系クリッカーゲームを作ろう Unity入門の森 ゲームの作り方参考に学習しながらゲームを作るブログです。

ひつじを4頭購入して現金が32円ある状態でセーブ。

わかりにくいですが、ひつじのいる場所が少し前に移動してるのがわかると思います。
セーブしてロードに成功しました!
一般的なセーブ・ロードの書き方
Unityでゲームをセーブ・ロードしてみよう!
みなさんはゲームを遊んでいて、途中でやめたあと「続きからプレイできたらいいな」と思ったことはありませんか?
それを実現するのが「セーブ」と「ロード」です。
- セーブ … 今のゲームの状態を記録すること
- ロード … 記録した状態から続きを始めること
これができると、プレイヤーは「もう一度最初からやり直す」必要がなくなり、ゲームがもっと楽しくなります。
Unityでは、このセーブ・ロードの仕組みを自分で作ることができます。この記事では、その基本的なやり方を一緒に見ていきましょう!
どうやって保存するの?
ゲームのデータを保存するときには「どの情報を残すか」を決める必要があります。
たとえば、以下のようなものです。
- プレイヤーのスコア(何点取ったか)
- プレイヤーの位置(どこまで進んだか)
- 所持アイテム(鍵やコインなど)
Unityでは、こうしたデータをPlayerPrefs(プレイヤープレフス) という機能を使って保存できます。
PlayerPrefsは、かんたんに言うと「メモ帳」のようなもの。
そこに「スコアは100点」「鍵を1個持っている」といった情報を書きこんで、あとで読み出せるんです。
実際の書き方(サンプル)
// スコアを保存する
PlayerPrefs.SetInt("score", 100);
// 保存した内容をすぐにファイルに反映する
PlayerPrefs.Save();
これで「score」という名前で100点が記録されました。
そして、記録したスコアを読み出すにはこう書きます。
// 保存したスコアを読み出す
int score = PlayerPrefs.GetInt("score", 0);
ここで「0」は、データがまだ保存されていなかったときの初期値です。
セーブとロードをボタンでできるようにしよう
プログラムだけでは少し味気ないので、実際のゲーム画面に「セーブボタン」と「ロードボタン」を置いてみましょう。
- Canvasを作る
- Buttonを置く
- ButtonのOnClickにスクリプトを登録する
これで、プレイヤーがボタンを押すだけでデータを保存したり読み込んだりできるようになります。
たとえば、セーブボタンを押したら「今のスコアを保存」、ロードボタンを押したら「保存したスコアを読み込み」といった動きを作れます。
ちょっと応用してみよう
セーブ・ロードができるようになると、いろんな工夫ができます。
- プレイヤーが倒した敵の数を記録する
- 最後に遊んだステージ番号を記録する
- アイテムを拾ったかどうかを記録する
こうしてデータを保存しておけば、プレイヤーは「途中から再開」できて便利です。
よくある失敗
最初にセーブ・ロードを作ろうとすると、よくこんな失敗があります。
- データを保存したつもりでも、実は保存していなかった
- 保存はできたけど、呼び出す名前(キー)を間違えていた
- Save() を呼んでいなかった
もしうまくいかないときは、コードを見直して「名前がちゃんと一致しているか」「Save()を呼んでいるか」を確認してみてください。
まとめ
セーブ・ロードは、ゲームをもっと遊びやすくする大事な機能です。
最初はスコアだけでもOK!
慣れてきたら、アイテムやステージ情報など、保存できるものを増やしていきましょう。
UnityではPlayerPrefsを使うと簡単に実現できるので、ぜひチャレンジしてみてください。
ゲームの効果音「サウンド追加」
音が入ると、また楽しみが増えるよねぇー
今回講座の方でも紹介されていた、「効果音ラボ様」お借りしました。

あれ?講座より音が一つ多くない?って思った方、それ正解です。
「コインの音、ひつじが刈られる音、ひつじのなき声、売却ボタンの音」ひつじの購入ボタンを別の音を鳴らしたかったので追加しました。
「Sizeは4」を「Sizeは5」に変更して「Soundsフォルダ」に追加したい音をドラッグアンドドロップで入れます。名前を「お店」にしました。これで、ひつじを購入した時に追加した音がなってくれました。
スマホ解像度とアスペクト比の考え方 固定解像度で対応させる
講座記事と同じにならないんだけど・・・・?

インスペクター内の設定が間違ってるのかと思って、日本語表示から英語に変えてみてもわからなくて
講座記事を読み返したら!
「このドロップダウンから違う解像度のStandalone(1024×768)を選択してみましょう。」って書いてあってこれは、「サイズを変更したら画面が崩れますよ」って解説だけだと思ってしまった( ノД`)シクシク…

「Standalone(1024×768)」に変更したら講座通りになった!!!

「Canvas」の設定も間違ってないよ!😅

説明をちゃんと読みましょうね。😅
レターボックス用Canvasを追加
設定出来たけどこれで合ってるのかなぁー
シーンの表示がこんな感じになったけど、ゲーム画面がちゃんと表示されてればOKなのか?

後は、実機テストで確認するのがいいね。

にほんブログ村