0

我正在写一个涉及货物的游戏,我计划拥有大量的货物类型。目前我有一个Cargo班级,一艘载货的船有一系列Cargo它持有的s。

当我真正想知道每艘船有多少货物时,我真的不想让每艘船都有一堆物品。尤其是当这些船将被大量制造和丢弃时。

我确定我正在寻找的东西是如此基本,以至于我什至会看起来很愚蠢,但我知道有一些类似于包含对象和相关值的数组的东西。我想用它来引用Cargo静态数组中的类型,并保存数量。

它叫什么?我将如何使用它(即它的常用功能是什么)?一些代码片段和术语将是理想的。

4

2 回答 2

3

只需让您的货物类包含一个数量属性。

或者您可以有一个 CargoType 类,其中包含有关 Cargo 类型的信息(即是食物、金钱还是枪支)。然后,您的 Cargo 类将具有 CargoType 属性和 Quantity 属性。

这样,您的船舶货物数组将只有每种类型的 Cargo,并且 Quantity 属性用于指示有多少。

于 2011-12-12T18:37:12.727 回答
1

您可能正在寻找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)来避免垃圾收集问题。

于 2011-12-12T18:51:00.523 回答