制作台
本课属于 Coddy Unity 学习旅程的“Unity 游戏架构”单元。第 62 课,共 64 课。
在生存游戏中,制作台可以把你收集的东西变成可用的物品。两个按钮可以收集木头和石头,三种配方可以用它们制作更多物品:两个木头可以制作一块木板,一块木板和两块石头可以制作一把斧头,四块木板可以制作一艘木筏。只有当背包里的物品满足配方所需时,才能按下对应的配方按钮,而且制作会消耗这些物品。配方是填入 Inspector 中制作台的数据,因此添加新配方不需要编写新代码。每当背包发生变化时,它都会通知所有监听者;每次变化时,背包还会保存为 JSON,因此退出游戏也不会丢失任何东西。
这个项目由两节课完成。本课会编写背包上的 Inventory;下一课会介绍制作台的配方。
挑战
困难第 1 部分:补全 Inventory;现在可以收集物品了。
- 添加可序列化的
ItemStack(公共属性item、count)和InventoryData(公共属性List<ItemStack> stacks)。 - 补全
Count、Add、Remove(数量为 0 时移除堆叠)和Describe:Wood 3, Plank 1或empty。 - 每次更改都会将数据保存到
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 在线编辑器