我正在为我的游戏编写 C# 游戏引擎,但遇到了问题。
我需要为每种不同类型的块做一个 XNA.Rectangle drawRectangle。
块存储在块列表中,因此必须覆盖该属性,以便通过绘制访问而无需大量转换。
我已经尝试了很多方法,但都没有奏效。
这是我正在做的当前一个:
块.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
。 - 每次访问属性时都不必创建新的矩形