Unity ノンフィールドRPGの作り方講座14 オートセーブシステム・キャラ強化画面の開発とタイトル画面の仕上げ | Unity入門の森 ゲームの作り方

Unity ノンフィールドRPGの作り方講座14 オートセーブシステム・キャラ強化画面の開発とタイトル画面の仕上げ

Unity 初心者向けノンフィールドRPGの作り方 (スマホ化対応)

現場レベルのゲーム制作が、すべてここで学べます。

【永久会員チケット】

永久会員チケット|Unity入門の森

全講座を見放題で学ぶ

ソースコード・素材・プロジェクトすべて公開。
Unityの基礎から応用まで、一生使えるスキルを体系的に習得。

この記事はUnityとC#でノンフィールドRPGを作る講座の第14回です。

前回はゲームオーバー時のリザルトシーンを作成しました。

前回の記事:

ノンフィールドRPGの作り方講座13 ゲームオーバー時のリザルトシーンと経験値システムの実装
この記事はノンフィールドRPGの作り方講座の第13回です。前回は攻撃時や被ダメージ時の演出、バトル勝利・敗北時の処理、さらに勝利時のレベルアップ処理を実装しました。前回の記事:第13回ではゲームオーバー時のリザルトシーンの作成を行います。リ...

第14回ではプレイデータのオートセーブシステムやロード処理を作ります。

また、キャラクター強化画面の作成を行います。今回でノンフィールドRPGは一旦完成するのであと一息です!がんばっていきましょう!

【ゲームの作り方講座プレゼント中!】

ゲームプレイデータのセーブ・ロードシステムを作る

このゲームはスマホで遊べるハクスラ周回型のノンフィールドローグライクRPGです。

キャラクター強化した結果を保存するためでもありますが、スマホでプレイする現代人はいつでもプレイをやめて気軽に再開したいものです。

ここでは、そうしたゲームプレイの進行状況をセーブ(保存)・ロード(読込)する機能をGameManagerに実装します。

GameManager.cs

セーブについて

JsonUtility.ToJsonはC#のオブジェクト(実体化されたクラスなど)をJSON形式の文字列に変換するために使われます。

また、PlayerPrefs.SetStringはキーと値のペアでデータを端末に保存するために使われます。

今回はUnityに登録しているアプリ名(Application.productName)をキーとして、PlayRecord変数の内容を文字列にして保存しています。

ロードについて

PlayerPrefs.GetStringはキーを指定して端末に保存されている文字列データを読み込むために使われます。

JsonUtility.FromJsonは、JSON形式の文字列をC#のオブジェクトに変換するために使われます。

今回はUnityに登録しているアプリ名(Application.productName)をキーとして、文字列を取得し、PlayRecordクラスに変換してGameManagerのPlayRecord変数に代入しています。

タイトルシーンにステータス強化UIを作成する

ここからはキャラクターステータス強化UIを作成していきます。[Assets]→[Scenes]にある[Title]をダブルクリックしてタイトルシーンを開きます。

タイトルシーンからスタートしたとき、ポイントを取得していた場合に表示する主人公強化UIを作成します。

HierarchyビューにあるCanvasオブジェクトを右クリックし、[UI]→[Panel]をクリックします。

名前を「Point」に変更します。

PointオブジェクトのImageコンポーネントのSource Imageを[Asset/Gui_parts/bar_ready]に変更し、Colorのアルファ値を255に変更して不透明にします。

これでPointパネルが表示されてる間はタイトルシーンの後ろの画面が表示されなくなりました。

このPointパネルをステータス強化画面にしていきます。

初期レベルを上げるUIを作成

このゲームではレベルが上がるとHPや攻撃力などが上がります。初期レベルが高いとそれだけ冒険を有利に進められます。ここではそんな初期レベルの強化を行うためのUIを作成します。

Pointオブジェクトを右クリックし、[UI]→[Image]をクリックします。名前を「Level」に変更します。

下の画像のとおり変更します。ImageコンポーネントのSource Imageは[Asset/Gui_parts/button_frame]に変更します。

Levelオブジェクトを右クリックし、[UI]→[Text – TextMeshPro]をクリックしてテキストオブジェクトを2つ作成します。名前はそれぞれ「Caption」と「Value」にします。

それぞれのInspectorウィンドウを開き、下の画像のとおり変更します。

ここまで設定できると以下のような画面になっているはずです。

それでは続いてステータス強化UIを作っていきます。

強化ボタンの作成

Levelオブジェクトを右クリックし、[UI]→[Button – TextMeshPro]をクリックします。

Buttonオブジェクトをクリックして、Inspectorビューを開き下の画像のとおり変更します。

ImageコンポーネントのSource Imageは[Asset/Gui_parts/button]に変更します。

さらにButtonオブジェクトを展開して、子オブジェクトのText(TMP)のInspectorビューを開き、下の画像のとおり変更します。

ここまで設定すると以下のような画面になります。

初期の食料保有量を強化するUIを作成

この食料がダンジョン内進行や戦闘時の行動回数になります。そのため、初期の食料が多いとそれだけ多く行動を行え、深い階層まで進行することができます。

さきほど作成した初期レベル強化UIをコピーして、初期の食料保有量を強化UIも作成します。

Levelオブジェクトを右クリックし、[Duplicate]をクリックして複製し、名前を「Food」に変更します。

FoodオブジェクトのInspectorビューを開いて、下の画像のとおり変更します。

Foodオブジェクトを展開して、CaptionオブジェクトのTextMeshProコンポーネントを下の画像のとおり変更します。

所有ポイントの表示UI

最後に冒険で取得したポイントの残りを表示するUIを作成します。これもFoodオブジェクトを複製して作成します。

Foodオブジェクトを右クリックし、[Duplicate]をクリックして複製し、名前を「Point」に変更します(後で気付きましたが親のPanelオブジェクトもPointになっていました。名称が被っていてややこしくて申し訳ないです)。

PointオブジェクトのInspectorビューを開いて、下の画像のとおり変更します。

ImageコンポーネントのSource Imageは[Asset/Gui_parts/name_bar2]に変更します。

Pointオブジェクトを展開して、子オブジェクトのCaptionオブジェクトのTextMeshProコンポーネントを下の画像のとおり変更します。

同じく子オブジェクトのValueオブジェクトのTextMeshProコンポーネントを下の画像のとおり変更します。

探索開始ボタンに変更する

複製して作成したPointオブジェクトの子オブジェクトになっている、Buttonオブジェクトを下の画像のように変更します。

ImageコンポーネントのSource Imageは[Asset/Gui_parts/button_ready_on]に変更します

Buttonオブジェクトの子オブジェクトになっているTextMeshProコンポーネントを下の画像のとおり変更します。

ここまで設定を終えると以下のような画面になります。

タイトルシーンで強化UIの操作とデータのロード

ここではタイトルシーンで強化UIが表示されるようにします。

また、強化するときに使用する定数を追加します。

続きを読む
このコンテンツはパスワードで保護されています。 コンテンツを読みたい方はUnity入門の森ショップ(https://unityforest.shop/)で講座閲覧権を取得してね。

まとめ

今回はタイトルシーンでポイントを使って主人公を強化するUIを作成、そしてデータのセーブとロードを実装しました。

「HATENAKI DUNGEON」はこれで完成となります。

おめでとうございます!

今後またこの講座をさらに応用し、より本格的なゲームにしていく講座を追加していくかもしれませんが、ひとまず完成です。

最後まで読んでいただきありがとうございました。あなたのオリジナルRPG制作のお役に立ててたら幸いです。

Unity ノンフィールドRPGの作り方講座に戻る>>

【ゲームの作り方講座もプレゼント中!】

現場レベルのゲーム制作が、すべてここで学べます。

【永久会員チケット】

永久会員チケット|Unity入門の森

全講座を見放題で学ぶ

ソースコード・素材・プロジェクトすべて公開。
Unityの基礎から応用まで、一生使えるスキルを体系的に習得。

コメント

タイトルとURLをコピーしました