こんにちは!今回の記事ではセーブ機能の使い方を解説していきます。
このセーブ機能を使うと、ワールドに再入室してもレベルを引き継いで楽しめるワールドを作ることができます!では早速やっていきましょう🙌
テンプレートワールドを導入してワールド作成の準備をする
経験値とレベルの表示に テンプレートワールド『プログレッション』 内の Prefab を利用します。事前にテンプレートワールドを導入をしておいてください。
これから作業をしていくために、まずはプレビューが出来る状態のワールドを用意しましょう!
詳しくはコチラの『ワールド制作の基礎を学ぼう』をご覧ください。

経験値やレベルを表示するための UI を設置する
まず、経験値やレベルを表示するために UI を設置します!
Asset > ClusterCreatorKitTemplate > Progression > Prefabs > Hud の階層にある PlayerLocalUI の Prefab を利用します。こちらを Scene に配置してください。今回設定する Key のほとんどはこの PlayerLocalUI 用に設定しています。

触ると経験値が加わりレベルアップができるキューブをつくる
次に触ると経験値が加わって、レベルアップできるキューブを作っていきましょう👍
Cube が触られると 「ExpGet」というメッセージを 触った人(Owner)に向かって発信するようにします!
まず 3D Object > Cube から立方体を追加し、 Cube に Add Component から Interact Item Trigger を追加します。Trigger の Size は 1 で Target は Owner 、 Key を ExpGet 、 Parameter Type を Signal にします。

次に Hierarchy を右クリックして Create Empty から空のオブジェクトを追加し、Player という名前に変更します。Position / Rotation に入っている値をすべて0に初期化しましょう!
セーブ機能を使う
Player に Add Component から Initialize Player Trigger を追加します。
再入室した際にも Initialize Player Trigger に追加された Key が、プレイヤーに引き継がれます!
つまり、このコンポーネントに保存したい Key を登録するだけで簡単にセーブ機能を使うことができるのです!
今回の例では、経験値・レベル・最大経験値の3つを保存したいため、 Initialize Player Trigger の Size を 3 にします。exp は経験値を保持する変数、level はレベルを保持する変数、maxExp は 次のレベルアップまでに必要な経験値の量を表しています。
それぞれの Parameter Type は Integer に変更しましょう!各 Trigger の設定は下記画像を参照してください。

経験値を加える処理をつくる
次に経験値を加える処理を作っていきます。Add Component から Player Logic を追加しましょう。細かい設定は下記の画像を参照してください。簡単に説明すると、先程作成した Cube から ExpGet というメッセージを受け取るたびに経験値を 10 増やすようになっています。また、 exp が maxExp 以上になると「レベルアップしたよ」というメッセージを発信するようになっています。

レベルアップ処理をつくる
次にレベルアップ処理を作っていきます。先程と同様にAdd Component から Player Logic を追加しましょう。細かい設定は下記の画像を参照してください。

このロジックの内容を紹介していきます。1つ目はレベルアップ時の余剰分の経験値を表示するために最大値を超えた経験値から最大値を引いています。2つ目はレベルを1上げる処理になっています。3つ目は次のレベルアップまでの経験値を1.2倍に増やしています。4つ目はレベルアップしたときにアニメーションを再生するようにメッセージを発信しています。
これにて完成です!!アップロードをして動作を確認してみましょう!!🙌
再入室をした時に、レベルと経験値は引き継がれているのがわかりますね!
