我正在写一个涉及货物的游戏,我计划拥有大量的货物类型。目前我有一个Cargo
级,一艘载有货物的船只有一个Cargo
的数组。
我真的宁愿不让每艘船上都有一堆物品,而我真正想知道的是每艘船有多少货物。特别是当这些船只被创造并丢弃很多时。
我确定我正在寻找的东西是如此基本我甚至会因为询问而显得愚蠢,但我知道有类似于拥有对象和相关值的数组。我想用它来引用静态数组中的Cargo
类型,并保留数量。
它叫什么?我将如何使用它(即用于它的常用功能)?一些代码片段和术语将是理想的。
答案 0 :(得分:3)
只需让您的货物类包含数量属性即可。
或者您可以拥有CargoType类,其中包含有关货物类型的信息(即是否有一些食物,金钱或枪支)。然后,您的Cargo类将具有CargoType属性和Quantity属性。
这样你船上货物的数组只有每种类型的货物,数量属性用于表示货物的数量。
答案 1 :(得分:1)
您可能正在寻找Dictionary课程。它类似于数组(使用整数索引)或对象(可以用作基于字符串的关联数组)。 Dictionary使用对象作为唯一键,映射到单个值。
我认为你不需要一个。全局变量很少是个好主意。我不会不必要地使这个变得复杂,只是让每艘船处理它自己的货物,也许使用AaronLS suggested的数量。但是不要过多担心这里的性能,即使你每帧创建和销毁数千艘船只,渲染它们所需的时间也远远超过数组的处理时间。
无论如何,这是你如何使用字典和一些事情来考虑。它没有太多特殊的方法,它几乎就像一个数组一样使用。
var dict = new Dictionary();
var key:MyClass = new MyClass(); // a key can be of any class
dict[key] = "foo"; // set a value
trace( dict[key] ); // traces: foo
dict[key] = null; // set value to null, key is still there. It won't get garbage collected!
delete dict[key]; // remove the key
考虑使用new Dictionary(true)来避免垃圾收集问题。