Я пытаюсь свести к минимуму размер объекта плитки при создании 2d-сетки, такой как tilemap. Я создаю массив коротких [,], и каждый [y, x] местоположение соответствует id для плитки. Для этого я создаю класс под названием TileType и имеет структуру Tile для доступа к информации из 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];
}
}
Я нашел это, прочитав сообщение о том, как эффективно хранить данные карты, как это. Я не писал это и его пример. Но мой вопрос заключается в том, как бы я нарисовал плитку на экране с помощью этого метода? Я бы установил способ, которым Texture будет соответствовать исходному прямоугольнику (TextureSource) в атласе плитки. Но я не понимаю, как бы я это сделал. IE draw (Tile.Type.Id)? Но Ид просто короткий.