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」は、データがまだ保存されていなかったときの初期値です。

セーブとロードをボタンでできるようにしよう

プログラムだけでは少し味気ないので、実際のゲーム画面に「セーブボタン」と「ロードボタン」を置いてみましょう。

  1. Canvasを作る
  2. Buttonを置く
  3. ButtonのOnClickにスクリプトを登録する

これで、プレイヤーがボタンを押すだけでデータを保存したり読み込んだりできるようになります。

たとえば、セーブボタンを押したら「今のスコアを保存」、ロードボタンを押したら「保存したスコアを読み込み」といった動きを作れます。

ちょっと応用してみよう

セーブ・ロードができるようになると、いろんな工夫ができます。

  • プレイヤーが倒した敵の数を記録する
  • 最後に遊んだステージ番号を記録する
  • アイテムを拾ったかどうかを記録する

こうしてデータを保存しておけば、プレイヤーは「途中から再開」できて便利です。

よくある失敗

最初にセーブ・ロードを作ろうとすると、よくこんな失敗があります。

  • データを保存したつもりでも、実は保存していなかった
  • 保存はできたけど、呼び出す名前(キー)を間違えていた
  • Save() を呼んでいなかった

もしうまくいかないときは、コードを見直して「名前がちゃんと一致しているか」「Save()を呼んでいるか」を確認してみてください。

まとめ

セーブ・ロードは、ゲームをもっと遊びやすくする大事な機能です。
最初はスコアだけでもOK!
慣れてきたら、アイテムやステージ情報など、保存できるものを増やしていきましょう。

UnityではPlayerPrefsを使うと簡単に実現できるので、ぜひチャレンジしてみてください。

ゲームの効果音「サウンド追加」

音が入ると、また楽しみが増えるよねぇー
今回講座の方でも紹介されていた、「効果音ラボ様」お借りしました。

あれ?講座より音が一つ多くない?って思った方、それ正解です。

「コインの音、ひつじが刈られる音、ひつじのなき声、売却ボタンの音」ひつじの購入ボタンを別の音を鳴らしたかったので追加しました。

「Sizeは4」を「Sizeは5」に変更して「Soundsフォルダ」に追加したい音をドラッグアンドドロップで入れます。名前を「お店」にしました。これで、ひつじを購入した時に追加した音がなってくれました。

スマホ解像度とアスペクト比の考え方 固定解像度で対応させる

講座記事と同じにならないんだけど・・・・?

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

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

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

説明をちゃんと読みましょうね。😅

レターボックス用Canvasを追加

設定出来たけどこれで合ってるのかなぁー
シーンの表示がこんな感じになったけど、ゲーム画面がちゃんと表示されてればOKなのか?

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

にほんブログ村 ゲームブログ ゲーム制作へ
にほんブログ村