ショップとインベントリ
CoddyのUnityジャーニー「本格的なゲームを作る」セクションの一部。レッスン 54/56。
レベルの合間に、ヒーローはショップを訪れます。棚にはヘルメット、ブーツ、マントの3つのアイテムが並び、それぞれのボタンに価格が表示されています。また、まだ買えないアイテムのためにコインを稼げる「仕事」ボタンもあります。ヒーローが購入したものは下部に表示されるインベントリに追加され、残ったコインと所持アイテムは、次にゲームを起動したときにもそのまま残ります。
スクリプトを2つ作成します。ShopオブジェクトにShopを、各アイテムのボタンにShopItemを設定します。
チャレンジ
難しいInspector で Shop に startCoins(100)、pay(25)、coinsText、inventoryText、workButton、および棚の順に並んだ3つの ShopItem を items に設定します。各 ShopItem には、itemName と price(Helmet 40、Boots 60、Cape 120)、label(ボタン上のテキスト)、および shop を設定します。
- コインはキー
Coinsの下に保存されます。保存データがないプレイヤーはstartCoinsから始めます。coinsTextにはCoins: 100のように表示されます。 - Work をクリックするたびに
payコインを獲得します。 - キー
Owned_にアイテム名を続けたキー(Owned_Helmet)の値が1の場合、そのアイテムを所有しています。販売中はラベルにHelmet: 40と表示され、所有するとHelmet: ownedと表示されます。 - アイテムのボタンをクリックできるのは、そのアイテムをまだ所有しておらず、プレイヤーが価格以上のコインを持っている場合だけです。クリックするとアイテムを購入し、コインから価格が差し引かれて、そのアイテムを所有します。
inventoryTextには、棚の順に所有アイテムがInventory: Helmet, Capeのように表示されます。所有アイテムがない場合はInventory: emptyと表示されます。- 変更はすべてすぐに保存され、各テキストとボタンに新しい状態が表示されます。
Play を押して、買い物と仕事をし、Stop を押してから再び Play を押し、最後に Check を押します。
自分で試してみよう
using UnityEngine;
using UnityEngine.UI;
using TMPro;
public class Shop : MonoBehaviour
{
public int startCoins = 100;
public int pay = 25;
public TMP_Text coinsText;
public TMP_Text inventoryText;
public Button workButton;
public ShopItem[] items;
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。