Menu
CoddyTech

制作台

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

在生存游戏中,制作台可以把你收集的东西变成可用的物品。两个按钮可以收集木头和石头,三种配方可以用它们制作更多物品:两个木头可以制作一块木板,一块木板和两块石头可以制作一把斧头,四块木板可以制作一艘木筏。只有当背包里的物品满足配方所需时,才能按下对应的配方按钮,而且制作会消耗这些物品。配方是填入 Inspector 中制作台的数据,因此添加新配方不需要编写新代码。每当背包发生变化时,它都会通知所有监听者;每次变化时,背包还会保存为 JSON,因此退出游戏也不会丢失任何东西。

这个项目由两节课完成。本课会编写背包上的 Inventory;下一课会介绍制作台的配方。

challenge icon

挑战

困难

第 1 部分:补全 Inventory;现在可以收集物品了。

  1. 添加可序列化的 ItemStack(公共属性 item、count)和 InventoryData(公共属性 List<ItemStack> stacks)。
  2. 补全 Count、Add、Remove(数量为 0 时移除堆叠)和 Describe:Wood 3, Plank 1 或 empty。
  3. 每次更改都会将数据保存到 Application.persistentDataPath 中的 inventory.json,并触发 Changed;Awake 会加载数据。

按“开始”,收集物品,然后再次开始:木材会恢复。接着按“检查”。

亲手试试

using System;
using System.Collections.Generic;
using System.IO;
using UnityEngine;

// 在这里添加 ItemStack 和 InventoryData

public class Inventory : MonoBehaviour
{
    public event Action Changed;

    void Awake()
    {
        // 如果 inventory.json 存在,就加载它
    }

    public int Count(string item)
    {
        return 0;
    }

    public void Add(string item, int amount)
    {
    }

    public void Remove(string item, int amount)
    {
    }

    public string Describe()
    {
        return "empty";
    }
}

Unity 游戏架构中的所有课

自己练习: Unity 在线编辑器