これは本当に紛らわしいようですが、値としてさまざまなクラスで満たされた辞書を作成し、文字をキーとして使用したいと考えています。そのディクショナリでキーを呼び出すときに、「new ClassInDictionary」と入力しているかのように振る舞わせる必要があります。
これは、さまざまなブロックを定義するさまざまなシンボルを含むテキスト ファイルを作成できるようにするためです。
物事を明確にするために、私の現在のコードは次のとおりです。
blockIdentifier.Add("=", new BlockAir()); // Define which class corresponds to which letter
blockIdentifier.Add("-", new BlockDirt());
for (int mapX = 0; mapX < mapWidth; mapX++)
{
for (int mapY = 0; mapY < mapHeight; mapY++)
{
try
{
Block block = blockIdentifier[mapSplit[mapY].Substring(mapX, 1)]; // Simply find which letter to use, let's pretend it's: "="
// The line above should be creating a new instance of the class BlockAir
block.blockX = mapX * 45;
block.blockY = mapY * 45;
mapList[mapY, mapX] = block;
}
catch (Exception)
{
}
}
}
変数 blockIdentifier:
public static Dictionary<string, Block> blockIdentifier = new Dictionary<string, Block>();
そしてBlockDirt:
public class BlockDirt : Block
{
public int hi;
public BlockDirt()
: base("Dirt Block.png", 0, 0, true)
{
}
}
blockIdentifier["="] を呼び出して、BlockDirt() クラスの新しいインスタンスを取得するだけです。どうすればよいですか?