我有一个块类,我希望它包含对在块中占据某些坐标的对象的引用(由int标识符表示)。由于许多对象没有碰撞,因此同一位置可能会被多个对象占据。块具有2个维度(x,y)。这是我在想达到的目的:
public class Chunk{
public List<int>[] objPresence;
}
这将形成一个列表数组(其中size = chunksizeX * chunksizeY),其中索引将是展平的x,y坐标,并且列表将包含该位置上的所有对象。 (列表中的每个int都是我给定对象的标识符)
所以要找到当前处于给定位置的对象,我会这样做:
listOfObjectsOnPosition = objPresence[ flattenIndex(x,y) ];
到目前为止还不错,但是现在如果我要检查一个特定对象是否在某个位置,我必须遍历列表,并且希望能够对此进行O(1)访问。 / p>
这是使用字典的替代方法:
public class Chunk{
public Dictionary<int,byte>[] objPresence;
}
并进行访问以查找特定对象:
objPresence[ flattenIndex(x,y) ].ContainsKey(objToSearch)
如果我只想让所有对象都在该位置,我也可以遍历字典键。
但是在这种方法中,因为我正在使用Dictionary,并且int键是对象的标识符,所以字典上的字节值浪费了内存,因为我不需要任何值。
是否有一种方法可以实现我在这里没有浪费字节的内容,或者有另一种更好的方法可以完全做到这一点?
谢谢!