【发布时间】:2016-08-12 11:09:13
【问题描述】:
我正在尝试在 Game Maker 中制作一个照明系统,并构建我想要在 ds_map 中包含所有灯光的系统。我希望将 ds_map 保存在包含系统中所有灯光的第二个 ds_map 中
lights {
"l-01": {"x":20, "y":40, "radius":15},
...
}
关于清理系统的问题: 我是否必须遍历地图销毁所有子地图然后销毁地图,当光照贴图被销毁时,Game Maker 会自动销毁子地图吗?
ds_map_destroy(lights); // do the sub maps ("l-01") also get destroyed?
还是我必须这样做:
var k = ds_map_find_first(lights);
repeat(ds_map_size(lights)){
ds_map_destroy(lights[? k]);
k = ds_map_find_next(lights, k);
}
接着第一个问题,如果我删除一个键,游戏制造商会破坏子地图
ds_map_delete(lights, "l-01") // will this destroy the map indexed under "l-01"
你可能会问:“你为什么用一个 ds_map 来保存一堆 ds_map,为什么不直接创建一个地图列表?
答案来自第二个问题。如果我将地图保存在列表中,并且我需要删除其中一个地图,则列表将在删除地图时调整大小,从而抵消所有其他索引值 第二个原因是在 Game Maker 中,ds_maps 比 ds_lists 快得多
我希望我已经把我的问题说清楚了,并且你们中的一个人已经有了答案。
【问题讨论】:
标签: memory data-structures hashmap game-maker gml