私はC#でゲームをプログラミングしていますが、パフォーマンスが重要なコンポーネントにはSoAパターンが使用されています。C#での配列の構造 - 定型文のコード書込みを減らす
public class ComponentData
{
public int[] Ints;
public float[] Floats;
}
理想的には、私は他のプログラマが唯一の(上記のように)、このデータを指定し、それを行うことがしたいと思います:
は、ここでの例です。しかし、いくつかの操作等、、、コピーを割り当てる成長のように、各配列のために行われなければなら今私はそうのように、それらを実装するための抽象メソッドと抽象クラスを使用しています:
public class ComponentData : BaseData
{
public int[] Ints;
public float[] Floats;
protected override void Allocate(int size)
{
Ints = new int[size];
Floats = new float[size];
}
protected override void Copy(int source, int destination)
{
Ints[destination] = Ints[source];
Floats[destination] = Floats[source];
}
// And so on...
}
これが必要ですプログラマーは、新しいコンポーネントを書き込むたびに、そして新しい配列を追加するたびに、この定型コードをすべて追加します。
テンプレートを使って考えてみましたが、これはAoSパターンではうまくいきますが、SoAにはあまり効果がありません(Data : BaseData<int, float>
は非常に曖昧です)。
私はこれらの配列をどこかに自動的に "注入"して、定型コードを極端に減らすことを考えています。
わかりません。少なくとも同じ量のコードを書くのではないでしょうか? – jesta