我正在编写一款涉及货物的游戏,我计划拥有大量货物类型。目前我有一艘Cargo
级,一艘运载货物的船有一组它所持有的Cargo
级。
当我真正想知道的是每艘船有多少货物时,我真的不想让每艘船都有一堆东西。尤其是当这些船被造出来又被丢弃的时候。
我确信我正在寻找的东西是如此基本,我甚至会看起来愚蠢的问,但我知道有一些类似于数组,保存一个对象和一个相关的值。我想用它来引用静态数组中的Cargo
类型,并保持数量。
它叫什么?我将如何使用它(即它的常用功能是什么)?一些代码片段和术语将是理想的。
让您的cargo类包含Quantity属性。
或者您可以有一个CargoType类,它包含关于货物类型的信息(例如:不管是食物、钱还是枪)。然后你的Cargo类会有一个CargoType属性和一个Quantity属性。
这样,船上货物的数组将只包含每种类型的cargo,并且Quantity属性用于指示数量。
您可能正在寻找Dictionary类。它类似于数组(使用整数索引)或对象(可以用作基于字符串的关联数组)。Dictionary使用对象作为惟一键,将其映射到单个值。
我认为你不需要。使用全局变量很少是个好主意。我不会不必要地把这复杂化,只是让每艘船处理自己的货物,也许可以像AaronLS建议的那样使用数量。但是在这里不要太担心性能,即使你每帧创建和销毁数千艘船,渲染它们将比处理数组花费更多的时间。
无论如何,这里是如何使用字典和一些需要考虑的事情。它没有太多特殊的方法,它的使用方式几乎就像一个数组。
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)来避免垃圾收集问题