回顾:从商店购买
本课属于 Coddy Unity 学习旅程的“Unity 游戏架构”单元。第 29 课,共 64 课。
这一章把数据移到了许多对象共享的资源中。商店的物品就是这样的资源,因此玩家购买的内容应该放在 Shop 中,而不是放在这些物品里。
挑战
简单按下 Space 购买选中的物品,不要修改资源。
- 在 Shop 中,用
List<ItemData> owned保存已购买的物品。 - 按下 Space 时,如果物品已拥有,则记录
Already owned: Iron Sword;如果物品价格高于gold,则记录Not enough gold for Iron Sword。 - 否则,从
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;
}
}
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
Unity 游戏架构中的所有课
自己练习: Unity 在线编辑器