我正在爲我的遊戲編寫C#遊戲引擎,並且遇到了問題。覆蓋靜態字段
我需要爲每個不同類型的塊做一個XNA.Rectangle drawRectangle。
塊被存儲在一個塊列表中,所以該屬性可以通過draw進行訪問,而不需要投射很多,必須重寫。
我已經嘗試了很多方法,但沒有工作。
下面是當前我做:
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);
然而布洛克斯創建和訪問drawRectangle
時,它仍然會返回0, 0,32,32.
理想情況下,我可以覆蓋drawRectangle
成員,但是這樣做意味着要在每個塊類中創建一個成員。我只想調整m_drawRectangle。
每個塊將被創建數百次,所以我不希望它是非靜態的,並且在構造函數中執行它會很愚蠢。
除了只是將靜態函數初始化爲每個塊中的靜態事物之外,還有其他更好的方法嗎?
編輯:
所以總結起來,我的要求是:在BlockX.cs
- 最少的額外代碼重寫
- 現場必須保持靜態
- 最好不用重寫
drawRectangle
,只有m_drawRectangle
。 - 不必創建一個新的矩形每次訪問該屬性