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