復習:ショップで購入する
CoddyのUnityジャーニー「Unityのゲームアーキテクチャ」セクションの一部。レッスン 29/64。
この章では、多くのオブジェクトが共有するアセットにデータを移しました。ショップの商品もそのようなアセットなので、プレイヤーが購入するものは、商品ではなくショップに属します。
チャレンジ
簡単Spaceキーで選択したアイテムを購入できるようにし、アセットには変更を加えないでください。
- Shopで購入したアイテムを
List<ItemData> ownedに保持します。 - Spaceキーを押したとき、所持済みのアイテムは
Already owned: Iron Swordとログに出力します。goldより高価なアイテムの場合はNot enough gold for Iron Swordとログに出力します。 - それ以外の場合は、
goldから価格を差し引き、そのアイテムをownedに追加し、Bought Iron Swordとログに出力して、テキストを更新します。
「プレイ」を押してLong Bowを購入します。その後、「確認」を押します。
自分で試してみよう
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
using TMPro;
public class Shop : MonoBehaviour
{
public ItemDatabase database;
public TMP_Text itemText;
public TMP_Text goldText;
public int gold = 50;
private int index;
void Start()
{
Show();
}
void Update()
{
if (Keyboard.current.rightArrowKey.wasPressedThisFrame)
{
index = (index + 1) % database.items.Count;
Show();
}
if (Keyboard.current.leftArrowKey.wasPressedThisFrame)
{
index = (index - 1 + database.items.Count) % database.items.Count;
Show();
}
// Space: 選択中のアイテムを購入する
}
void Show()
{
ItemData item = database.items[index];
itemText.text = item.itemName + ": " + item.price + " gold";
goldText.text = "Gold: " + gold;
}
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
Unityのゲームアーキテクチャのすべてのレッスン
自分で練習してみよう: Unityプレイグラウンド