【发布时间】:2014-10-16 06:41:43
【问题描述】:
我正在制作一个基于 TileMap 的游戏引擎。
我有一个“Tile”类,它用于定义块类型和设置标志以确定属性(isSolid、isEmitter)。现在我有一个 2d 平铺对象数组 [MAP_WIDTH][MAP_HEIGHT]。
现在我知道为游戏中的每个实际图块存储一个新图块是不必要的,但我需要找到一种方法以更简单的格式存储地图数据。我最初的想法是存储一个无符号整数的二维数组(或向量),但我无法使它成为一个可扩展的解决方案。
如何用数字表示每个 Tile?所以在渲染函数中我可以说“从存储在数组中的整数值渲染图块的类型”。 renderTileType(map[x][y])
对不起,这是我的第一个问题,请原谅我的任何罪过。
提前致谢!
【问题讨论】:
-
你有多少块瓷砖?数组不起作用需要很多。您可以使用
unsigned char的数组而不是int,具体取决于您必须处理多少“图块类型”。 -
它确实有效,但我已经可以看到很多开销。我有一个数组,但是在加载地图时,我实际上为每个地图创建了一个“新”平铺对象,但我正在寻找一种方法来为每个平铺添加某种标识符,以告诉引擎什么“类型”瓦岛因为我不需要瓷砖是唯一的,只是类型。那有意义吗?我可能解释得不好,抱歉
-
您可以使用每个二维数组元素的值作为唯一
Tile对象数组(向量)的索引吗? -
哇,我不知道为什么我想不出这么简单的东西……谢谢!我接受了根据您的评论得出的答案,部分归功于您。
-
请注意,提供的答案意味着您仍然会为每个图块消耗一个内存指针(通常为 4 或 8 个字节);而如果您拥有少于 256 种类型的图块,您仍然可以使用
unsigned char数组作为单独数组的索引。不过,不管怎样。这完全取决于您实际拥有多少瓷砖。