C# 正在尝试加载+;将50个图像转换为显示它们的对象,有没有一种简单的方法?

C# 正在尝试加载+;将50个图像转换为显示它们的对象,有没有一种简单的方法?,c#,image,object,factory,C#,Image,Object,Factory,简而言之,我有一个网格系统,它是由tile组成的,每个tile都有属性,其中一个是filepath。我想加载50个具有不同属性、文件路径等的不同分幅,例如分幅1是grass,因此文件路径是grass.png,isWalkable=true。我现在的做法是 public string[] Names = new string[50]; public string[] Filepaths = new string[50]; public bool[] IsWalkable =

简而言之,我有一个网格系统,它是由tile组成的,每个tile都有属性,其中一个是filepath。我想加载50个具有不同属性、文件路径等的不同分幅,例如分幅1是grass,因此文件路径是grass.png,isWalkable=true。我现在的做法是

    public string[] Names = new string[50];
    public string[] Filepaths = new string[50];
    public bool[] IsWalkable = new bool[50];
    public Color[] BaseColor = new Color[50];
    public Image[] Images = new Image[50];
然后

        Names[0] = "Grass";
        Filepaths[0] = "img\\grass.png";
        IsWalkable[0] = true;
        BaseColor[0] = Color.Empty;
        Images[0] = new Bitmap("img\\grass.png");
然后我循环遍历每个瓷砖并给它赋值

                Tiles[x, y] = new Tile();
                Tiles[x, y].Name = Names[counter];
                Tiles[x, y].Filepath = Filepaths[counter];
                Tiles[x, y].IsWalkable = IsWalkable[counter];
                Tiles[x, y].BaseColor = BaseColor[counter];
                Tiles[x, y].TerrainImage = Images[counter];
                counter++;
我几乎100%确定这是一种处理我的瓷砖创作的糟糕方式,我听说可能需要使用工厂,我查了一下,但我不知道如何将其纳入我的项目,所以我想知道是否有人知道我可以使用的任何方法。请保持它相对简单,或者尝试解释,如果它变得复杂,因为我还是编程领域的新手,谢谢

定义您的类:

public class ImageInfo
{
    public string Name {get;set;}
    public string Filepath {get;set;}
    public bool IsWalkable {get;set;}
    public Color BaseColor {get;set;}
    public Image Image {get;set;}
}
初始化您的收藏(一次):

声明分幅:

var tiles = new ImageInfo[10, 10];
绕道而行:

Tiles[x, y] = collection[counter]; counter++;

也许有一天你会从一个文件或外部数据源加载数据(而不是硬编码)

你应该将该信息存储在某个地方,如果你不告诉它,程序就无法知道草砖是可行走的

将这些信息存储在配置文件(或数据库或w/e)中将使更新更易于管理,而不是全部在代码中进行

我想用
平铺
类做点什么

public class Tile {
    public string Name { get; set; }
    public string FilePath { get; set; }
    public bool IsWalkable { get; set; }
    public Color BaseColor { get; set; }
    public Image Image { get; set; }
}

然后从加载的数据库/配置文件中设置(或根据需要)

最好使用一个类<代码> MyClass < /C> >属性>代码>名称<代码> >代码>文件> <代码>等。然后有一个对象<代码> MyClass [50 ] < /代码>谢谢你一定会考虑它,但是仍然没有解决硬编码的问题。这就是为什么它不是一个答案:)哦,对不起,这个网站还是很新的,抱歉。谢谢你的提示!
public class Tile {
    public string Name { get; set; }
    public string FilePath { get; set; }
    public bool IsWalkable { get; set; }
    public Color BaseColor { get; set; }
    public Image Image { get; set; }
}