使用数组的基本库存系统

时间:2015-03-25 15:15:57

标签: c# arrays unity3d

我正在尝试通过C#在Unity中创建一个基本的(非常非常基本的)库存系统,并且无法确定如何使用数组。是否最好为每个库存槽都有一个不同的多维数组,每个维度都带有项数据的整数值?或者使用锯齿状阵列,每个" jag"表示项目数据的不同值?或者有没有更好的解决方案,不使用数组?我计划拥有大约40-50个库存槽,每个项目大约有10-15个方面,所以这两个选项看起来都不简单。任何帮助,将不胜感激。提前致谢!

1 个答案:

答案 0 :(得分:4)

分割对象的次数越多越好。您应该尽可能地标准化对象,将椅子对象分成多个部分并让椅子继承/实例化一些通用属性。我相信以下内容会更好地解释;

class Item
{
    public string Name { get; set; }
    public int Quantity { get; set; }
    public Properties Props { get; set; }
}

class Properties
{
    public int Weight { get; set; }
    public int Height { get; set; }

    // All of the possible properties here...

}

Item有一个名为Props的字段,它对你游戏中的很多对象/项是全局的,而Item是一个可以引用很多东西的对象。如果您构建这样的对象,则可以反复使用它们,而不是为游戏中的每个要素创建单独的对象。

然后,您最终可以创建以下库存;

var Inventory = new List < Item > {
    new Item {
        Name = "Bullet", Quantity = 100, Props = new Properties {
            Height = 10, Weight = 10
        }
    }
};

修改:

根据您的要求,我会尝试更多地解释一下代码。列表是为您保存数据的通用类。您也可以创建一个数组,但列表更具动态性,最终您可能会使用Arrays而不是列表来调整问题。有关列表的详细信息,请查看https://msdn.microsoft.com/en-us/library/6sh2ey19%28v=vs.110%29.aspx

我相信第二部分是你可能遇到困难的时候。以下伪代码应该更好地解释它。

Class Item { Fields, Properties }
Class Properties { Fields }

new Inventory = List of <Items> ( New Item Class(es))

如上所述,我们创建项目列表,而库存类型也是List,因为它将托管项目。

我希望现在更有意义。