我想在创建像tilemap一样的二维网格时最小化图块对象的大小。我创建了一个short [,]数组,每个[y,x]位置对应一个tile的id。为此,我创建一个名为TileType的类并使用Tile Tile根据其id来访问TileType中关于其自身的信息。就像这样:使用结构从类获取信息
struct Tile
{
short typeId;
public TileType Type
{
get
{
return TileType.Get(typeId);
}
set
{
typeId = value.Id;
}
}
}
class TileType
{
public short Id;
public string Name;
public Texture2D Texture;
public Rectangle TextureSource;
public bool IsObstacle;
static List<TileType> types;
static TileType()
{
types = new List<TileType>();
var type = new TileType();
type.Name = "Dirt";
//initialize here
types.Add(type);
}
public static TileType Get(short id)
{
return types[id];
}
}
我通过阅读有关如何有效地存储数据的地图喜欢这个职位发现这一点。我没有写这个,只是一个例子。但我的问题是如何使用这种方法在屏幕上绘制一个图块?我会设置一种方式,使纹理对应一个tile地图集中的源矩形(TextureSource)。但我不明白我会如何画这个。 IE绘制(Tile.Type.Id)?但是Id只是一个简短的例子。