背包物品本身的数据结构

在实现背包前我们需要对背包的数据结构做一下定义, 首先背包本身的数据结构比较简单主要有下面两个:

  • Name 也可以叫 id 用来唯一标记对应的物品元信息
  • Count 数量

有些同学可能会说背包物品应该有最大堆叠大小、物品数量等等信息为什么不写上去?

我是这么考虑的,对于渲染背包而言,目前考虑的背包本身是比较简单的,而背包的元信息反而是复杂的,他可能有不同的类别。不论从系统设计还是实现简单程度而言,通过分离元信息和背包物品的信息显然要容易很多。

public class BagItem  
{  
    public string Name;  
    public int Count;  
    public bool IsEmpty => Count == 0;  
    public BagItem Clone()  
    {        return new BagItem()  
        {  
            Name = Name,  
            Count = Count,  
        };  
    }}

这样就简单的定义了一个背包物品的功能。

定义背包

下面我们就需要定义背包了,背包是一个简单的结构,我们现在假定背包就是简单的二维数组,有长宽定义:

  • Items
  • ColumnCount
  • RowCount

所以现在可以定个 bag:

public class Bag  
{  
    public BagItem[,] Items;  
    public int ColumnCount;  
    public int RowCount;  
}

定义背包元数据

背包的元数据可以有很多很多条目,目前我们先朝着简单的方向设计:

  • Name
  • Icon
  • MaxCount
public class BagItemResource  
{  
    public string Name;  
    public string Icon;  
    public int MaxCount = 99;  
}

结语

现在我们完成了背包系统中数据结构设定,下面我们需要实现背包的管理逻辑

本文标题:如何设计一个背包系统的数据结构

永久链接:https://iceprosurface.com/godot/bag-system/database/

作者授权:本文由 icepro 原创编译并授权刊载发布。

版权声明:本文使用「署名-非商业性使用-相同方式共享 4.0 国际」创作共享协议,转载或使用请遵守署名协议。

查看源码: