ゲーム用の C# ゲーム エンジンを作成していますが、問題が発生しました。
異なるタイプのブロックごとに XNA.Rectangle drawRectangle を実行する必要があります。
ブロックはブロックのリストに格納されるため、多くをキャストせずにドローでアクセスできるようにするには、プロパティをオーバーライドする必要があります。
私はそれを行う多くの方法を試しましたが、どれもうまくいきません。
これが私がやっている現在のものです:
Block.cs
protected static Rectangle m_drawRectangle = new Rectangle(0, 0, 32, 32);
public Rectangle drawRectangle
{
get { return m_drawRectangle; }
}
BlockX.cs
protected static Rectangle m_drawRectangle = new Rectangle(32, 0, 32, 32);
ただし、BlockX を作成して にアクセスするdrawRectangle
と、0、0、32、32 が返されます。
理想的には、メンバーをオーバーライドするだけで済みますがdrawRectangle
、これを行うと、すべてのブロック クラスにメンバーを作成することになります。m_drawRectangle のみを調整したい。
各ブロックは何百回も作成されるため、非静的にしたくありません。コンストラクターでそれを行うのはばかげています。
すべてのブロックで静的なものを初期化するために静的関数を配置する以外に良い方法はありますか?
編集:
要約すると、私の要件は次のとおりです。
- オーバーライドする BlockX.cs の最小限の余分なコード
- フィールドは静的である必要があります
- できればオーバーライドする必要はありませ
drawRectangle
んm_drawRectangle
。 - プロパティにアクセスするたびに新しい四角形を作成する必要がない