我在XNA中创建了基于2D瓦片的RPG,并且处于初始设计阶段。我在想如何让我的瓷砖引擎工作,并提出一个粗略的草图。基本上我想要一个瓷砖网格,但在每个瓷砖位置,我希望能够添加多个瓷砖并具有偏移量。我喜欢这样做,这样我就可以在世界地图上添加单独的树木来增加天赋。或者在一些城镇的酒吧里放置瓶子,而不必用不同的瓶子画出一堆不同的酒吧瓷砖。帮助C#程序设计实现:多列数组还是更好的方法?
但是也许我的触及范围比我的掌握要大。我去实现这个想法,并在我的Map对象中有这样的东西:
List<Tile>[,] Grid;
但是后来我想到了。比方说,我有一张200x200的世界地图,就RPG游戏而言,它实际上会非常小。这将达到40,000个列表。在我看来,我认为必须有更好的方法。现在这是预先优化。我不知道我碰巧设计我的地图和游戏的方式是否能够处理这个问题,但它似乎是不必要的低效率,而且如果我的游戏变得更加复杂,可能会出现一些问题。
我的一个想法是使偏移量和多个贴片可选,以便我只在需要时付钱。但我不知道我该怎么做。多个对象的数组?
object[,] Grid;
因此,这里是我的准则:
-
瓦位置
- 二维网格
- 每瓦位置具有最小的1瓦,但可以有选择有更多的
- 每个额外的瓷砖可以选择有一个X和Y偏移精确定位
任何人都可以帮助一些想法实现这样的一个设计(不需要它为我完成,只是想法),同时保持内存使用率最低?
如果你在这里需要更多的背景是大致也是我的地图和图块对象量:
public struct Map
{
public Texture2D Texture;
public List<Rectangle> Sources; //Source Rectangles for where in Texture to get the sprite
public List<Tile>[,] Grid;
}
public struct Tile
{
public int Index; //Where in Sources to find the source Rectangle
public int X, Y; //Optional offsets
}
我想看看你的游戏=] – Luiscencio 2010-03-18 19:15:54
怎么样多的条目解释?类似于'Dictionary>' –
2010-03-18 19:16:57