Menu
CoddyTech

回顾:从商店购买

本课属于 Coddy Unity 学习旅程的“Unity 游戏架构”单元。第 29 课,共 64 课。

这一章把数据移到了许多对象共享的资源中。商店的物品就是这样的资源,因此玩家购买的内容应该放在 Shop 中,而不是放在这些物品里。

challenge icon

挑战

简单

按下 Space 购买选中的物品,不要修改资源。

  1. 在 Shop 中,用 List<ItemData> owned 保存已购买的物品。
  2. 按下 Space 时,如果物品已拥有,则记录 Already owned: Iron Sword;如果物品价格高于 gold,则记录 Not enough gold for Iron Sword。
  3. 否则,从 gold 中扣除价格,将物品添加到 owned,记录 Bought Iron Sword,并更新文本。

按下 Play 并购买 Long Bow。然后按下 Check。

亲手试试

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();
        }
        // 空格键:购买选中的物品
    }

    void Show()
    {
        ItemData item = database.items[index];
        itemText.text = item.itemName + ": " + item.price + " gold";
        goldText.text = "Gold: " + gold;
    }
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

Unity 游戏架构中的所有课

自己练习: Unity 在线编辑器